Exemplo n.º 1
0
char*
chaz_SharedLib_no_version_filename(chaz_SharedLib *lib) {
    const char *prefix    = S_get_prefix();
    const char *shlib_ext = chaz_OS_shared_lib_ext();

    return chaz_Util_join("", prefix, lib->name, shlib_ext, NULL);
}
Exemplo n.º 2
0
void
chaz_CFlags_hide_symbols(chaz_CFlags *flags) {
    if (flags->style == CHAZ_CFLAGS_STYLE_GNU
        && strcmp(chaz_OS_shared_lib_ext(), ".dll") != 0) {
        chaz_CFlags_append(flags, "-fvisibility=hidden");
    }
}
Exemplo n.º 3
0
char*
chaz_SharedLib_filename(chaz_SharedLib *lib) {
    const char *shlib_ext = chaz_OS_shared_lib_ext();

    if (strcmp(shlib_ext, ".dll") == 0) {
        return S_build_filename(lib, lib->major_version, shlib_ext);
    }
    else {
        return S_build_filename(lib, lib->version, shlib_ext);
    }
}
Exemplo n.º 4
0
void
chaz_CFlags_set_shared_library_version(chaz_CFlags *flags,
                                       chaz_SharedLib *lib) {
    const char *shlib_ext = chaz_OS_shared_lib_ext();
    char       *string;

    if (flags->style != CHAZ_CFLAGS_STYLE_GNU
        || strcmp(shlib_ext, ".dll") == 0) {
        return;
    }

    if (strcmp(chaz_OS_shared_lib_ext(), ".dylib") == 0) {
        const char *version = chaz_SharedLib_get_version(lib);
        string = chaz_Util_join(" ", "-current_version", version, NULL);
    }
    else {
        char *soname = chaz_SharedLib_major_version_filename(lib);
        string = chaz_Util_join("", "-Wl,-soname,", soname, NULL);
        free(soname);
    }
    chaz_CFlags_append(flags, string);
    free(string);
}
Exemplo n.º 5
0
static char*
S_build_filename(chaz_SharedLib *lib, const char *version, const char *ext) {
    const char *prefix    = S_get_prefix();
    const char *shlib_ext = chaz_OS_shared_lib_ext();

    if (strcmp(shlib_ext, ".dll") == 0) {
        return chaz_Util_join("", prefix, lib->name, "-", version, ext, NULL);
    }
    else if (strcmp(shlib_ext, ".dylib") == 0) {
        return chaz_Util_join("", prefix, lib->name, ".", version, ext, NULL);
    }
    else {
        return chaz_Util_join("", prefix, lib->name, ext, ".", version, NULL);
    }
}
Exemplo n.º 6
0
void
chaz_CFlags_compile_shared_library(chaz_CFlags *flags) {
    const char *string;
    if (flags->style != CHAZ_CFLAGS_STYLE_GNU
        || strcmp(chaz_OS_shared_lib_ext(), ".dll") == 0
       ) {
        return;
    }
    if (chaz_OS_is_darwin()) {
        string = "-fno-common";
    }
    else {
        string = "-fPIC";
    }
    chaz_CFlags_append(flags, string);
}
Exemplo n.º 7
0
void
chaz_CFlags_link_shared_library(chaz_CFlags *flags) {
    const char *string;
    if (flags->style == CHAZ_CFLAGS_STYLE_MSVC) {
        string = "/DLL";
    }
    else if (flags->style == CHAZ_CFLAGS_STYLE_GNU) {
        if (strcmp(chaz_OS_shared_lib_ext(), ".dylib") == 0) {
            string = "-dynamiclib";
        }
        else {
            string = "-shared";
        }
    }
    else {
        chaz_Util_die("Don't know how to link a shared library with '%s'",
                      chaz_CC_get_cc());
    }
    chaz_CFlags_append(flags, string);
}
Exemplo n.º 8
0
char*
chaz_SharedLib_major_version_filename(chaz_SharedLib *lib) {
    const char *shlib_ext = chaz_OS_shared_lib_ext();

    return S_build_filename(lib, lib->major_version, shlib_ext);
}