From: Gábor Gombás <[email protected]>

When shared libraries are enabled, it becomes important to link every
library against all the libraries it directly uses, and do not link it
against any library that it uses only indirectly.

Note that we really need a separate FCGI-aware version of libboinc_crypt
to get the dependencies straight. On the bright side it's small and it
allows removing a couple of #ifdefs from the code.
---
 api/Makefile.am               |    2 ++
 lib/Makefile.am               |   14 ++++++++++----
 lib/crypt.h                   |    6 ------
 sched/Makefile.am             |    4 ++--
 sched/file_upload_handler.cpp |    4 ----
 5 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/api/Makefile.am b/api/Makefile.am
index 155e41a..974b8ff 100644
--- a/api/Makefile.am
+++ b/api/Makefile.am
@@ -36,11 +36,13 @@ endif
 lib_LTLIBRARIES = libboinc_api.la
 libboinc_api_la_SOURCES = $(api_files)
 libboinc_api_la_LDFLAGS = -rpath $(libdir) -release $(PACKAGE_VERSION)
+libboinc_api_la_LIBADD = ../lib/libboinc.la $(PTHREAD_LIBS)
 if BUILD_GRAPHICS_API
 lib_LTLIBRARIES += libboinc_graphics2.la
 libboinc_graphics2_la_SOURCES = $(graphics2_files)
 libboinc_graphics2_la_CPPFLAGS = -I$(top_srcdir)/lib 
 libboinc_graphics2_la_LDFLAGS = -rpath $(libdir) -release $(PACKAGE_VERSION)
+libboinc_graphics2_la_LIBADD = libboinc_api.la ../lib/libboinc.la $(GLUT_LIBS) 
-ljpeg $(PTHREAD_LIBS)
 endif #BUILD_GRAPHICS_API
 
 if INSTALL_HEADERS
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 5ce65ad..a3ea8a2 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -134,22 +134,28 @@ libboinc_la_SOURCES = $(generic_sources) $(mac_sources)
 libboinc_la_CFLAGS = $(AM_CFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS)
 libboinc_la_CXXFLAGS = $(AM_CXXFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS)
 libboinc_la_LDFLAGS = -rpath $(libdir) -release $(PACKAGE_VERSION)
-libboinc_la_LIBADD = 
+libboinc_la_LIBADD = -ldl
 
 libboinc_crypt_la_SOURCES = crypt.cpp
 libboinc_crypt_la_CFLAGS = $(AM_CFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS)
 libboinc_crypt_la_CXXFLAGS = $(AM_CXXFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS)
 libboinc_crypt_la_LDFLAGS = -rpath $(libdir) -release $(PACKAGE_VERSION)
-libboinc_crypt_la_LIBADD = 
+libboinc_crypt_la_LIBADD = libboinc.la $(SSL_LIBS)
 
 
 if ENABLE_FCGI
-lib_LTLIBRARIES += libboinc_fcgi.la
+lib_LTLIBRARIES += libboinc_fcgi.la libboinc_crypt_fcgi.la
 libboinc_fcgi_la_SOURCES = $(libfcgi_sources) $(mac_sources)
 libboinc_fcgi_la_CFLAGS = -D_USING_FCGI_ $(AM_CFLAGS) $(PICFLAGS) 
$(PTHREAD_CFLAGS)
 libboinc_fcgi_la_CXXFLAGS = -D_USING_FCGI_ $(AM_CXXFLAGS) $(PICFLAGS) 
$(PTHREAD_CFLAGS)
 libboinc_fcgi_la_LDFLAGS = -rpath $(libdir) -release $(PACKAGE_VERSION)
-libboinc_fcgi_la_LIBADD =
+libboinc_fcgi_la_LIBADD = -lfcgi -ldl
+
+libboinc_crypt_fcgi_la_SOURCES = crypt.cpp
+libboinc_crypt_fcgi_la_CFLAGS = -D_USING_FCGI_ $(AM_CFLAGS) $(PICFLAGS) 
$(PTHREAD_CFLAGS)
+libboinc_crypt_fcgi_la_CXXFLAGS = -D_USING_FCGI_ $(AM_CXXFLAGS) $(PICFLAGS) 
$(PTHREAD_CFLAGS)
+libboinc_crypt_fcgi_la_LDFLAGS = -rpath $(libdir) -release $(PACKAGE_VERSION)
+libboinc_crypt_fcgi_la_LIBADD = libboinc_fcgi.la $(SSL_LIBS)
 endif 
 # end of "if ENABLE_FCGI"
 
diff --git a/lib/crypt.h b/lib/crypt.h
index aa26c6a..3419711 100644
--- a/lib/crypt.h
+++ b/lib/crypt.h
@@ -77,16 +77,10 @@ struct DATA_BLOCK {
 // size of text-encoded signature
 #define SIGNATURE_SIZE_TEXT (SIGNATURE_SIZE_BINARY*2+20)
 extern int sprint_hex_data(char* p, DATA_BLOCK&);
-#ifdef _USING_FCGI_
-#undef FILE
-#endif
 extern int print_hex_data(FILE* f, DATA_BLOCK&);
 extern int scan_hex_data(FILE* f, DATA_BLOCK&);
 extern int print_key_hex(FILE*, KEY* key, int len);
 extern int scan_key_hex(FILE*, KEY* key, int len);
-#ifdef _USING_FCGI_
-#define FILE FCGI_FILE
-#endif
 extern int sscan_key_hex(const char*, KEY* key, int len);
 extern int encrypt_private(
     R_RSA_PRIVATE_KEY& key, DATA_BLOCK& in, DATA_BLOCK& out
diff --git a/sched/Makefile.am b/sched/Makefile.am
index 7d36d37..5221b63 100644
--- a/sched/Makefile.am
+++ b/sched/Makefile.am
@@ -24,7 +24,7 @@ libsched_la_SOURCES = $(libsched_sources)
 libsched_la_CFLAGS = $(AM_CPPFLAGS)
 libsched_la_CXXFLAGS = $(AM_CPPFLAGS)
 libsched_la_LDFLAGS = -rpath $(libdir) -release $(PACKAGE_VERSION)
-libsched_la_LIBADD= $(SSL_LIBS)
+libsched_la_LIBADD = ../lib/libboinc_crypt.la ../lib/libboinc.la $(MYSQL_LIBS)
 
 ## install only headers that are meant for exporting the API !!
 if INSTALL_HEADERS
@@ -44,7 +44,7 @@ libsched_fcgi_la_SOURCES = $(libsched_sources)
 libsched_fcgi_la_CFLAGS = -D_USING_FCGI_ $(AM_CPPFLAGS)
 libsched_fcgi_la_CXXFLAGS = -D_USING_FCGI_ $(AM_CPPFLAGS)
 libsched_fcgi_la_LDFLAGS = -rpath $(libdir) -release $(PACKAGE_VERSION)
-libsched_fcgi_la_LIBADD=
+libsched_fcgi_la_LIBADD = ../lib/libboinc_crypt_fcgi.la 
../lib/libboinc_fcgi.la $(MYSQL_LIBS) -lfcgi
 
 endif
 # end of "if ENABLE_FCGI"
diff --git a/sched/file_upload_handler.cpp b/sched/file_upload_handler.cpp
index a7ea7db..de2f9e8 100644
--- a/sched/file_upload_handler.cpp
+++ b/sched/file_upload_handler.cpp
@@ -568,11 +568,7 @@ int get_key(R_RSA_PUBLIC_KEY& key) {
     FCGI_FILE *f = FCGI::fopen(buf, "r");
 #endif
     if (!f) return -1;
-#ifdef _USING_FCGI_
-    retval = scan_key_hex(FCGI_ToFILE(f), (KEY*)&key, sizeof(key));
-#else
     retval = scan_key_hex(f, (KEY*)&key, sizeof(key));
-#endif
     fclose(f);
     if (retval) return retval;
     return 0;
-- 
1.6.4.3

_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.

Reply via email to