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.