On Monday 19 December 2011 00:38:47 =?utf-8?B?TWF0xJtq?= Laitl wrote:
On 19. 12. 2011 Christophe Giboudeaux wrote:
On Sunday 18 December 2011 23:27:08 Matej Laitl wrote:
Sorry about the incorrect fix, I will build with -Wmissing-include-dirs
from now on. However I wonder how to fix the original problem.
Your commit doesn't mention the issue you're trying to fix. However,
having
the same directory included several times is not an issue (and I'm not
aware of any GCC flag that would throw a warning).
Ah, I tried to solve http://mail.kde.org/pipermail/amarok-devel/2011-
December/009663.html
Specifically, the problem is that mysql_config (since at least 5.1.56)
doesn't accept --variable=pkgincludedir - it accepts only --include
argument which returns something like -I/usr/include/mysql
-- Found MySQL: Usage: /usr/bin/mysql_config [OPTIONS]
[cut]
So I guess we'll have to strip that -I out of `mysql_config --include`. Can
we safely assume that it is only a single directory?
ok, then it only exists in higher version (the option exists in 5.5.x).
I see two solutions:
- only rely on find_path(MYSQL_INCLUDE_DIR...), so move it outside the
else(MYSQLCONFIG_EXECUTABLE) loop [1]
- Drop FindMysqlAmarok.cmake and use FindAmarok.cmake from kdelibs instead
(which worked fine here).
I prefer the second solution as the FindMysql from kdelibs is really cleaner
than the Amarok copy:
- MYSQL_CFLAGS doesn't look that important
- the linked targets gathered with 'mysql_config --libs' are already
explicitly added in the CMakeLists.txt files (./src/core-
impl/collections/db/sql/mysqlecollection/CMakeLists.txt, ./src/core-
impl/collections/db/sql/mysqlservercollection/CMakeLists.txt and some unit
tests) and the output variable is different if mysql_config is not present:
* with mysql_config, MYSQL_LIBRARIES=-L/usr/lib64 -lmysqlclient -lpthread -
lz -lm -lrt -lssl -lcrypto -ldl
* without it, MYSQL_LIBRARIES=/usr/lib64/libmysqlclient.so. The second one
is enough
- the kdelibs FindAmarok has better chances to detect mysql.h under Windows,
- and it also uses a cleaner way to decide if mysqle is there.
The first solution is the easy one, the second one needs more testing on
different platforms/distributions.
Christophe
[1] attached: fixMySQLAmarok.diff
diff --git a/cmake/modules/FindMySQLAmarok.cmake b/cmake/modules/FindMySQLAmarok.cmake
index 74805ca..44a3fb5 100644
--- a/cmake/modules/FindMySQLAmarok.cmake
+++ b/cmake/modules/FindMySQLAmarok.cmake
@@ -16,8 +16,18 @@ if(NOT WIN32)
find_program(MYSQLCONFIG_EXECUTABLE NAMES mysql_config mysql_config5 PATHS ${BIN_INSTALL_DIR} ~/usr/bin /usr/local/bin)
endif(NOT WIN32)
+find_path(MYSQL_INCLUDE_DIR mysql.h
+/opt/local/include/mysql5/mysql
+/opt/mysql/mysql/include
+/opt/mysqle/include/mysql
+/opt/ports/include/mysql5/mysql
+/usr/include/mysql
+/usr/local/include/mysql
+/usr/mysql/include/mysql
+~/usr/include/mysql
+)
+
if(MYSQLCONFIG_EXECUTABLE)
-exec_program(${MYSQLCONFIG_EXECUTABLE} ARGS --variable=pkgincludedir RETURN_VALUE _return_VALUE OUTPUT_VARIABLE MYSQL_INCLUDE_DIR)
exec_program(${MYSQLCONFIG_EXECUTABLE} ARGS --cflags RETURN_VALUE _return_VALUE OUTPUT_VARIABLE MYSQL_CFLAGS)
exec_program(${MYSQLCONFIG_EXECUTABLE} ARGS --libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE MYSQL_LIBRARIES)
exec_program(${MYSQLCONFIG_EXECUTABLE} ARGS --libmysqld-libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE MYSQL_EMBEDDED_LIBSTEMP)
@@ -49,18 +59,6 @@ if(MYSQLCONFIG_EXECUTABLE)
else(MYSQLCONFIG_EXECUTABLE)
-find_path(MYSQL_INCLUDE_DIR mysql.h
- ~/usr/include/mysql
- /opt/local/include/mysql5/mysql
- /opt/mysqle/include/mysql
- /opt/mysql/mysql/include
- /usr/mysql/include/mysql
- /usr/include/mysql
- /usr/local/include/mysql
- /opt/local/include/mysql
- /opt/ports/include/mysql5/mysql
-)
-
if(WIN32)
set(MYSQL_CLIENT_LIBRARY_NAME libmysql)
else(WIN32)
signature.asc
Description: This is a digitally signed message part.
___
Amarok-devel mailing list
Amarok-devel@kde.org
https://mail.kde.org/mailman/listinfo/amarok-devel