# HG changeset patch # User Kristian H?gsberg # Date 1214255960 14400 # Node ID 03fc85294bc96086c9bfac84aed2c83c1d41a962 # Parent fb5c3e1535ab563527294c0a7515d7ee78e1f5c3 Use GCC 4 -fvisibility to control exported symbols. diff -r fb5c3e1535ab -r 03fc85294bc9 configure.ac --- a/configure.ac Mon Jun 23 14:52:39 2008 -0400 +++ b/configure.ac Mon Jun 23 17:19:20 2008 -0400 @@ -103,6 +103,25 @@ changequote([,])dnl fi + +# gcc default visibility stuff + +have_gcc4=no +AC_MSG_CHECKING(for -fvisibility) +AC_COMPILE_IFELSE([ +#if defined(__GNUC__) && (__GNUC__ >= 4) +#else +#error Need GCC 4.0 for visibility +#endif +int main () { return 0; } +], have_gcc4=yes) + +if test "x$have_gcc4" = "xyes"; then + CFLAGS="$CFLAGS -fvisibility=hidden" +fi +AC_MSG_RESULT($have_gcc4) + + PKG_CHECK_MODULES(CURL, [libcurl]) AC_SUBST(CURL_CFLAGS) AC_SUBST(CURL_LIBS) diff -r fb5c3e1535ab -r 03fc85294bc9 librazor/importer.c --- a/librazor/importer.c Mon Jun 23 14:52:39 2008 -0400 +++ b/librazor/importer.c Mon Jun 23 17:19:20 2008 -0400 @@ -23,7 +23,7 @@ #include "razor-internal.h" #include "razor.h" -void +RAZOR_EXPORT void razor_importer_begin_package(struct razor_importer *importer, const char *name, const char *version, @@ -42,7 +42,7 @@ } -void +RAZOR_EXPORT void razor_importer_finish_package(struct razor_importer *importer) { list_set_array(&importer->package->properties, @@ -53,7 +53,7 @@ array_release(&importer->properties); } -void +RAZOR_EXPORT void razor_importer_add_details(struct razor_importer *importer, const char *summary, const char *description, @@ -66,7 +66,7 @@ importer->package->license = hashtable_tokenize(&importer->details_table, license); } -void +RAZOR_EXPORT void razor_importer_add_property(struct razor_importer *importer, const char *name, uint32_t flags, @@ -92,7 +92,7 @@ } } -void +RAZOR_EXPORT void razor_importer_add_file(struct razor_importer *importer, const char *name) { struct import_entry *e; @@ -104,7 +104,7 @@ e->name = strdup(name); } -struct razor_importer * +RAZOR_EXPORT struct razor_importer * razor_importer_create(void) { struct razor_importer *importer; @@ -121,7 +121,7 @@ } /* Destroy an importer without creating the set. */ -void +RAZOR_EXPORT void razor_importer_destroy(struct razor_importer *importer) { /* FIXME: write this */ @@ -469,7 +469,7 @@ free(pkgs); } -struct razor_set * +RAZOR_EXPORT struct razor_set * razor_importer_finish(struct razor_importer *importer) { struct razor_set *set; diff -r fb5c3e1535ab -r 03fc85294bc9 librazor/iterator.c --- a/librazor/iterator.c Mon Jun 23 14:52:39 2008 -0400 +++ b/librazor/iterator.c Mon Jun 23 17:19:20 2008 -0400 @@ -36,7 +36,7 @@ return pi; } -struct razor_package_iterator * +RAZOR_EXPORT struct razor_package_iterator * razor_package_iterator_create(struct razor_set *set) { struct razor_package_iterator *pi; @@ -49,7 +49,7 @@ return pi; } -void +RAZOR_EXPORT void razor_package_iterator_init_for_property(struct razor_package_iterator *pi, struct razor_set *set, struct razor_property *property) @@ -59,7 +59,7 @@ pi->index = list_first(&property->packages, &set->package_pool); } -struct razor_package_iterator * +RAZOR_EXPORT struct razor_package_iterator * razor_package_iterator_create_for_property(struct razor_set *set, struct razor_property *property) { @@ -69,7 +69,7 @@ return razor_package_iterator_create_with_index(set, index); } -struct razor_package_iterator * +RAZOR_EXPORT struct razor_package_iterator * razor_package_iterator_create_for_file(struct razor_set *set, const char *filename) { @@ -84,7 +84,7 @@ return razor_package_iterator_create_with_index(set, index); } -int +RAZOR_EXPORT int razor_package_iterator_next(struct razor_package_iterator *pi, struct razor_package **package, const char **name, @@ -119,7 +119,7 @@ return valid; } -void +RAZOR_EXPORT void razor_package_iterator_destroy(struct razor_package_iterator *pi) { if (pi->free_index) @@ -128,7 +128,7 @@ free(pi); } -struct razor_property_iterator * +RAZOR_EXPORT struct razor_property_iterator * razor_property_iterator_create(struct razor_set *set, struct razor_package *package) { @@ -148,7 +148,7 @@ return pi; } -int +RAZOR_EXPORT int razor_property_iterator_next(struct razor_property_iterator *pi, struct razor_property **property, const char **name, @@ -183,7 +183,7 @@ return valid; } -void +RAZOR_EXPORT void razor_property_iterator_destroy(struct razor_property_iterator *pi) { free(pi); @@ -195,7 +195,7 @@ int count; }; -struct razor_package_query * +RAZOR_EXPORT struct razor_package_query * razor_package_query_create(struct razor_set *set) { struct razor_package_query *pq; @@ -209,7 +209,7 @@ return pq; } -void +RAZOR_EXPORT void razor_package_query_add_package(struct razor_package_query *pq, struct razor_package *p) { @@ -220,7 +220,7 @@ pq->vector[p - packages] = 1; } -void +RAZOR_EXPORT void razor_package_query_add_iterator(struct razor_package_query *pq, struct razor_package_iterator *pi) { @@ -234,7 +234,7 @@ } } -struct razor_package_iterator * +RAZOR_EXPORT struct razor_package_iterator * razor_package_query_finish(struct razor_package_query *pq) { struct razor_package_iterator *pi; diff -r fb5c3e1535ab -r 03fc85294bc9 librazor/razor-internal.h --- a/librazor/razor-internal.h Mon Jun 23 14:52:39 2008 -0400 +++ b/librazor/razor-internal.h Mon Jun 23 17:19:20 2008 -0400 @@ -4,6 +4,14 @@ #include #include +/* GCC visibility */ +#if defined(__GNUC__) && __GNUC__ >= 4 +#define RAZOR_EXPORT __attribute__ ((visibility("default"))) +#else +#define RAZOR_EXPORT +#endif + + void *zalloc(size_t size); struct array { diff -r fb5c3e1535ab -r 03fc85294bc9 librazor/razor.c --- a/librazor/razor.c Mon Jun 23 14:52:39 2008 -0400 +++ b/librazor/razor.c Mon Jun 23 17:19:20 2008 -0400 @@ -65,7 +65,7 @@ { RAZOR_DETAILS_STRING_POOL, offsetof(struct razor_set, details_string_pool) }, }; -struct razor_set * +RAZOR_EXPORT struct razor_set * razor_set_create(void) { struct razor_set *set; @@ -85,7 +85,7 @@ return set; } -struct razor_set * +RAZOR_EXPORT struct razor_set * razor_set_open(const char *filename) { struct razor_set *set; @@ -119,7 +119,7 @@ return set; } -void +RAZOR_EXPORT void razor_set_open_details(struct razor_set *set, const char *filename) { struct razor_set_section *s; @@ -147,7 +147,7 @@ close(fd); } -void +RAZOR_EXPORT void razor_set_open_files(struct razor_set *set, const char *filename) { struct razor_set_section *s; @@ -175,7 +175,7 @@ close(fd); } -void +RAZOR_EXPORT void razor_set_destroy(struct razor_set *set) { unsigned int size; @@ -264,7 +264,7 @@ return 0; } -int +RAZOR_EXPORT int razor_set_write_to_fd(struct razor_set *set, int fd, enum razor_repo_file_type type) { @@ -287,7 +287,7 @@ } } -int +RAZOR_EXPORT int razor_set_write(struct razor_set *set, const char *filename, enum razor_repo_file_type type) { @@ -305,7 +305,8 @@ return close(fd); } -void + +RAZOR_EXPORT void razor_build_evr(char *evr_buf, int size, const char *epoch, const char *version, const char *release) { @@ -328,7 +329,7 @@ snprintf(evr_buf, size, "-%s", release); } -int +RAZOR_EXPORT int razor_versioncmp(const char *s1, const char *s2) { const char *p1, *p2; @@ -365,7 +366,7 @@ return *p1 - *p2; } -struct razor_package * +RAZOR_EXPORT struct razor_package * razor_set_get_package(struct razor_set *set, const char *package) { struct razor_package_iterator *pi; @@ -382,8 +383,9 @@ return p; } -void -razor_package_get_details(struct razor_set *set, struct razor_package *package, +RAZOR_EXPORT void +razor_package_get_details(struct razor_set *set, + struct razor_package *package, const char **summary, const char **description, const char **url, const char **license) { @@ -395,7 +397,7 @@ *license = &pool[package->license]; } -struct razor_entry * +RAZOR_EXPORT struct razor_entry * razor_set_find_entry(struct razor_set *set, struct razor_entry *dir, const char *pattern) { @@ -441,7 +443,7 @@ } while (!((e++)->flags & RAZOR_ENTRY_LAST)); } -void +RAZOR_EXPORT void razor_set_list_files(struct razor_set *set, const char *pattern) { struct razor_entry *e; @@ -526,7 +528,7 @@ return r; } -void +RAZOR_EXPORT void razor_set_list_package_files(struct razor_set *set, const char *name) { struct razor_package *package; @@ -547,7 +549,7 @@ * requires for a package have been installed before the package. **/ -void +RAZOR_EXPORT void razor_set_diff(struct razor_set *set, struct razor_set *upstream, razor_diff_callback_t callback, void *data) { @@ -602,7 +604,7 @@ razor_package_query_add_package(data, package); } -struct razor_package_iterator * +RAZOR_EXPORT struct razor_package_iterator * razor_set_create_remove_iterator(struct razor_set *set, struct razor_set *next) { @@ -622,7 +624,7 @@ return pi; } -struct razor_package_iterator * +RAZOR_EXPORT struct razor_package_iterator * razor_set_create_install_iterator(struct razor_set *set, struct razor_set *next) { diff -r fb5c3e1535ab -r 03fc85294bc9 librazor/root.c --- a/librazor/root.c Mon Jun 23 14:52:39 2008 -0400 +++ b/librazor/root.c Mon Jun 23 17:19:20 2008 -0400 @@ -20,7 +20,7 @@ char new_path[PATH_MAX]; }; -int +RAZOR_EXPORT int razor_root_create(const char *root) { struct stat buf; @@ -67,7 +67,7 @@ return 0; } -struct razor_root * +RAZOR_EXPORT struct razor_root * razor_root_open(const char *root) { struct razor_root *image; @@ -107,7 +107,7 @@ return image; } -struct razor_set * +RAZOR_EXPORT struct razor_set * razor_root_open_read_only(const char *root) { char path[PATH_MAX]; @@ -118,13 +118,13 @@ return razor_set_open(path); } -struct razor_set * +RAZOR_EXPORT struct razor_set * razor_root_get_system_set(struct razor_root *root) { return root->system; } -int +RAZOR_EXPORT int razor_root_close(struct razor_root *root) { razor_set_destroy(root->system); @@ -135,7 +135,7 @@ return 0; } -void +RAZOR_EXPORT void razor_root_update(struct razor_root *root, struct razor_set *next) { razor_set_write_to_fd(next, root->fd, RAZOR_REPO_FILE_MAIN); @@ -147,7 +147,7 @@ printf("wrote %s\n", root->new_path); } -int +RAZOR_EXPORT int razor_root_commit(struct razor_root *root) { /* Make it so. */ diff -r fb5c3e1535ab -r 03fc85294bc9 librazor/rpm.c --- a/librazor/rpm.c Mon Jun 23 14:52:39 2008 -0400 +++ b/librazor/rpm.c Mon Jun 23 17:19:20 2008 -0400 @@ -347,7 +347,7 @@ } } -struct razor_rpm * +RAZOR_EXPORT struct razor_rpm * razor_rpm_open(const char *filename) { struct razor_rpm *rpm; @@ -703,7 +703,7 @@ return l; } -int +RAZOR_EXPORT int razor_rpm_install(struct razor_rpm *rpm, const char *root) { struct installer installer; @@ -766,7 +766,7 @@ return 0; } -int +RAZOR_EXPORT int razor_rpm_close(struct razor_rpm *rpm) { int err; @@ -778,7 +778,7 @@ return err; } -int +RAZOR_EXPORT int razor_importer_add_rpm(struct razor_importer *importer, struct razor_rpm *rpm) { const char *name, *version, *release, *arch, *summary; diff -r fb5c3e1535ab -r 03fc85294bc9 librazor/transaction.c --- a/librazor/transaction.c Mon Jun 23 14:52:39 2008 -0400 +++ b/librazor/transaction.c Mon Jun 23 17:19:20 2008 -0400 @@ -165,7 +165,7 @@ } } -struct razor_transaction * +RAZOR_EXPORT struct razor_transaction * razor_transaction_create(struct razor_set *system, struct razor_set *upstream) { struct razor_transaction *trans; @@ -184,7 +184,7 @@ return trans; } -void +RAZOR_EXPORT void razor_transaction_install_package(struct razor_transaction *trans, struct razor_package *package) { @@ -192,7 +192,7 @@ trans->changes++; } -void +RAZOR_EXPORT void razor_transaction_remove_package(struct razor_transaction *trans, struct razor_package *package) { @@ -200,7 +200,7 @@ trans->changes++; } -void +RAZOR_EXPORT void razor_transaction_update_package(struct razor_transaction *trans, struct razor_package *package) { @@ -461,7 +461,7 @@ } } -const char * +RAZOR_EXPORT const char * razor_property_relation_to_string(struct razor_property *p) { switch (p->flags & RAZOR_PROPERTY_RELATION_MASK) { @@ -485,7 +485,7 @@ } } -const char * +RAZOR_EXPORT const char * razor_property_type_to_string(struct razor_property *p) { switch (p->flags & RAZOR_PROPERTY_TYPE_MASK) { @@ -567,7 +567,7 @@ } } -void +RAZOR_EXPORT void razor_transaction_update_all(struct razor_transaction *trans) { struct razor_package *p; @@ -740,7 +740,7 @@ } } -int +RAZOR_EXPORT int razor_transaction_resolve(struct razor_transaction *trans) { int last = 0; @@ -789,7 +789,7 @@ } } -int +RAZOR_EXPORT int razor_transaction_describe(struct razor_transaction *trans) { struct prop_iter rpi; @@ -820,7 +820,7 @@ return unsatisfied; } -int +RAZOR_EXPORT int razor_transaction_unsatisfied_property(struct razor_transaction *trans, const char *name, uint32_t flags, @@ -852,7 +852,7 @@ return 0; } -struct razor_set * +RAZOR_EXPORT struct razor_set * razor_transaction_finish(struct razor_transaction *trans) { struct razor_merger *merger; @@ -905,7 +905,7 @@ return razor_merger_finish(merger); } -void +RAZOR_EXPORT void razor_transaction_destroy(struct razor_transaction *trans) { transaction_set_release(&trans->system);