trinity-devel@lists.pearsoncomputing.net

Message: previous - next
Month: March 2012

Re: [trinity-devel] Why? TDE cmake does NOT respect 'export CMAKE_INCLUDE_PATH=X'

From: "David C. Rankin" <drankinatty@...>
Date: Wed, 14 Mar 2012 18:01:10 -0500
On 03/14/2012 05:48 PM, Serghei Amelian wrote:
> On Thursday 15 March 2012 00:37:16 David C. Rankin wrote:
> [...]
> 
>>
>>   There is something wrong with the logic behind ${APR_INCLUDE_DIRS} which
>> is probably why it got hardcoded to begin with?? ${APR_INCLUDE_DIRS} isn't
>> providing anything. Does it need more cmake code somewhere in the cmake
>> dir?
>>
>>   For some reason setting ${APR_INCLUDE_DIRS} doesn't include the
>> information from pkg-config:
>>
>> 17:31 nirvana:~/tde/tmp/tdesvn> pkg-config --variable=includedir apr-1
>> /usr/include/apr-1
>>
>>   Setting src/CMakeLists.txt using the patch hardcoding the dir seems to be
>> the only thing that works. This points to a problem with the cmake code
>> that is setting ${APR_INCLUDE_DIRS}. This patch is an example of how I got
>> it to work. The original patch including ${APR_INCLUDE_DIRS} is what should
>> be done, but the cmake code that sets ${APR_INCLUDE_DIRS} will need fixing
>> first.
>>
>>   This is http://bugs.pearsoncomputing.net/show_bug.cgi?id=916
> 
> I think there is no check for apr. Insert somewhere in ConfigureChecks.cmake a 
> code like this:
> 
> pkg_search_module( APR apr-1 )
> if( NOT APR_FOUND )
>     tde_message_fatal( "apr-1 is required, but was not found on your system" )
> endif( )
> 

OK, that something was missing is what I just figured out :), I'll test and
report back. I just added this to the bug report:

I can't figure out what is going on. When I set src/CMakeLists.txt:

include_directories(
<snip>
  ${SUBVERSION_INCLUDE_DIR}
  ${APR_INCLUDE_DIRS}
)

The CMakeCache.txt information is exactly the same as when I hardcode

include_directories(
<snip>
  ${SUBVERSION_INCLUDE_DIR}
  /usr/include/apr-1
)

APR_CONFIG:FILEPATH=/usr/bin/apr-1-config
svnqt_LIB_DEPENDS:STATIC=general;tqt;general;tqt-mt;general;/usr/lib/libsvn_client-1.so;general;/usr/lib/libsvn_diff-1.so;general;/usr/lib/libsvn_fs-1.so;general;/usr/lib/libsvn_ra-1.so;general;/usr/lib/libsvn_repos-1.so;general;/usr/lib/libsvn_subr-1.so;general;/usr/lib/libsvn_wc-1.so;general;-luuid
-lrt -lcrypt  -lpthread -ldl -L/usr/lib -lapr-1 -L/usr/lib -lldap -llber -llber
-ldb  -lgdbm  -lexpat -L/usr/lib -laprutil-1;general;/usr/lib/libsqlite3.so;
APR_CPP_FLAGS:INTERNAL=-D_REENTRANT -D_GNU_SOURCE
APR_EXTRA_LIBFLAGS:INTERNAL=-luuid -lrt -lcrypt  -lpthread -ldl -L/usr/lib -lapr-1
APR_INCLUDE_DIR:INTERNAL=/usr/include/apr-1
APU_CPP_FLAGS:INTERNAL=-I/usr/include/apr-1 -I/usr/include
APU_EXTRA_LIBFLAGS:INTERNAL=-L/usr/lib -lldap -llber -llber -ldb  -lgdbm
-lexpat -L/usr/lib -laprutil-1
APU_INCLUDE_DIR:INTERNAL=/usr/include/apr-1

  However, if I use ${APR_INCLUDE_DIRS}, the build fails with:

[  0%] Building CXX object src/svnqt/CMakeFiles/svnqt.dir/apr.cpp.o
cd /build/src/build/src/svnqt && /usr/bin/c++   -Dsvnqt_EXPORTS -DHAVE_CONFIG_H
-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector
--param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2   -DQT_NO_ASCII_CAST
-DQT_CLEAN_NAMESPACE -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION
-DQT_THREAD_SUPPORT -D_REENTRANT -include tqt.h -fPIC
-I/build/src/build/src/svnqt -I/opt/tqt3/include -I/opt/trinity/include/tqt
-I/opt/trinity/include -I/build/src/build -I/build/src/build/src
-I/build/src/tdesvn/src -I/build/src/tdesvn/src/settings
-I/build/src/tdesvn/src/svnqt -I/build/src/tdesvn/src/svnfrontend/graphtree
-I/build/src/tdesvn/src/svnfrontend/fronthelpers
-I/build/src/tdesvn/src/ksvnwidgets -I/build/src/tdesvn/src/helpers
-I/build/src/tdesvn/src/svnfrontend -I/build/src/tdesvn/src/svnqt/cache
-I/usr/include/subversion-1 -I/build/src/tdesvn/src/svnqt/SQLITE_INCLUDE_DIR
-fPIC -o CMakeFiles/svnqt.dir/apr.cpp.o -c /build/src/tdesvn/src/svnqt/apr.cpp
/build/src/tdesvn/src/svnqt/apr.cpp:32:25: fatal error: apr_general.h: No such
file or directory
compilation terminated.

  hardcoded, I get:

[  0%] Building CXX object src/svnqt/CMakeFiles/svnqt.dir/apr.cpp.o
cd /build/src/build/src/svnqt && /usr/bin/c++   -Dsvnqt_EXPORTS -DHAVE_CONFIG_H
-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector
--param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2   -DQT_NO_ASCII_CAST
-DQT_CLEAN_NAMESPACE -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION
-DQT_THREAD_SUPPORT -D_REENTRANT -include tqt.h -fPIC
-I/build/src/build/src/svnqt -I/opt/tqt3/include -I/opt/trinity/include/tqt
-I/opt/trinity/include -I/build/src/build -I/build/src/build/src
-I/build/src/tdesvn/src -I/build/src/tdesvn/src/settings
-I/build/src/tdesvn/src/svnqt -I/build/src/tdesvn/src/svnfrontend/graphtree
-I/build/src/tdesvn/src/svnfrontend/fronthelpers
-I/build/src/tdesvn/src/ksvnwidgets -I/build/src/tdesvn/src/helpers
-I/build/src/tdesvn/src/svnfrontend -I/build/src/tdesvn/src/svnqt/cache
-I/usr/include/subversion-1 -I/usr/include/apr-1
-I/build/src/tdesvn/src/svnqt/SQLITE_INCLUDE_DIR    -fPIC -o

  So the ${APR_INCLUDE_DIRS} variable is FUBAR....

-- 
David C. Rankin, J.D.,P.E.