-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Derek Atkins schrieb: > Yeah, I figured it would have moved the problem. Unfortunately > this is where the windows linker and the mac linker are.... > incompatible. This is particularly an issue in that a > "loadable module" != "shared library", but gnucash treats > them the same.
A few days ago I was wondering why libgncgnome_la_SOURCES in src/gnome/Makefile.am had some source files from backend/file listed, but obviously here's the answer: If the shared library needs symbols from backend/file and cannot link against the loadable module, you should list the source files directly into the library's SOURCES variable. That's what we probably need to do for libgncmod-business-backend-file as well. It looks extremly ugly, though :-/ The change in r13642 actually didn't change anything in the library requirements of libgncmod-business-backend-file, but it moved the dependency on libgnc-backend-file from libgncmod-business-core to libgw-business-core. Before we continue to guess these dependencies I thought I'd try to figure out a way to actually print the real dependencies; see below for a couple of one-liners to do so. I used them to determine the linking requirements of business-core; see below for the results before and after 13642, which show the newly introduced dependency of libgw-business-core on libgnc-backend-file... Christian # All in top-level of gnucash build tree # Create table of all exported symbols nm -A `find . -name '*.so'` | grep ' T ' | \ sed 's/^\([^:]*\).* \([^ ]*\)$/\1: \2/' > allsymbols # For a particular library, check symbol import # requirements, listing all symbols (needs the file from above) A=src/gnc-module/.libs/libgw-gnc-module.so && echo "$A requirements:" \ && nm $A | grep ' U ' | sed 's/^.* \([^ ]*\)$/\1/' | \ grep -f- allsymbols # For a particular library, check import # requirements, summarized by library A=src/gnc-module/.libs/libgw-gnc-module.so && echo "$A requirements:" \ && nm $A | grep ' U ' | sed 's/^.* \([^ ]*\)$/\1/' | \ grep -f- allsymbols | cut -d: -f1 | sort | uniq # List all import requirements # summarized by library for a full directory for $A in `find src/business/business-core -name '*.so'`; do \ echo -e "\n##$A requirements:" && nm $A | grep ' U ' | \ sed 's/^.* \([^ ]*\)$/\1/' | \ grep -f- allsymbols | cut -d: -f1 | sort | uniq; done ###### # Link requirements of src/business/business-core before r13642 # (IIRC that is r13637) ## src/business/business-core/file/.libs/libgncmod-business-backend-file.so requirements: ./lib/libqof/qof/.libs/libqof.so ./src/backend/file/.libs/libgnc-backend-file.so ./src/business/business-core/.libs/libgncmod-business-core.so ./src/engine/.libs/libgncmod-engine.so ./src/gnc-module/.libs/libgncmodule.so ./src/gnome/.libs/libgncgnome.so ## src/business/business-core/.libs/libgw-business-core.so requirements: ./lib/libqof/qof/.libs/libqof.so ./src/business/business-core/.libs/libgncmod-business-core.so ./src/engine/.libs/libgw-engine.so ## src/business/business-core/.libs/libgncmod-business-core.so requirements: ./lib/libqof/qof/.libs/libqof.so ./src/backend/file/.libs/libgnc-backend-file.so ./src/engine/.libs/libgncmod-engine.so ./src/engine/.libs/libgw-engine.so ./src/gnc-module/.libs/libgncmodule.so ./src/gnome/.libs/libgncgnome.so ###### # Link requirements of src/business/business-core after r13642 # (at r13645) ## src/business/business-core/file/.libs/libgncmod-business-backend-file.so requirements: ./lib/libqof/qof/.libs/libqof.so ./src/backend/file/.libs/libgnc-backend-file.so ./src/business/business-core/.libs/libgncmod-business-core.so ./src/engine/.libs/libgncmod-engine.so ./src/gnc-module/.libs/libgncmodule.so ./src/gnome/.libs/libgncgnome.so ## src/business/business-core/.libs/libgw-business-core.so requirements: ./lib/libqof/qof/.libs/libqof.so ./src/backend/file/.libs/libgnc-backend-file.so ./src/business/business-core/.libs/libgncmod-business-core.so ./src/engine/.libs/libgncmod-engine.so ./src/engine/.libs/libgw-engine.so ./src/gnome/.libs/libgncgnome.so ## src/business/business-core/.libs/libgncmod-business-core.so requirements: ./lib/libqof/qof/.libs/libqof.so ./src/engine/.libs/libgncmod-engine.so ./src/gnc-module/.libs/libgncmodule.so -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.1 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iQCVAwUBRBkzNGXAi+BfhivFAQJAmwQAmHVZ+HlkiA7jx7DuJJ7XQSy2biQPowee rAzBadeh98RW+pOMdrXUibOU7F3Ft0xkPenAEhW38ZAkgmfexMC3j0Jc0hryfO51 gaDaMLqF96VV/oQZGEzfWW59M8JBbtPSrjq/jQlizPH5YntUXI8OY7YvKf3pmYud NJuv+av2qfA= =s++T -----END PGP SIGNATURE----- _______________________________________________ gnucash-devel mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-devel
