Hi,

   I am using the macro SWIG_ADD_MODULE.

       SWIG_ADD_MODULE ( ribclient java RIBClient.i ParameterList.cpp )

The generated linker flag does not produce a loadable JNI module (it compiles and build but is not usable).

/usr/bin/c++ -bundle -headerpad_max_install_names -o libribclient.jnilib CMakeFiles/ribclient.dir/RIBClientJAVA_wrap.cxx.o CMakeFiles/ribclient.dir/ParameterList.cpp.o -L/usr/local/cppunit/1.12.1/lib -L/Users/nicholas/temp/pkg/OpenEXR/lib -L/usr/local/ILMBase/1.0.1/lib -L/Applications/Graphics/3Delight-7.0.51/lib -L. ../libutils.a -l3delight

I have found that the correct flag should be -dynamiclib instead of -bundle

   i.e.
/usr/bin/c++ -dynamiclib -headerpad_max_install_names -o libribclient.jnilib CMakeFiles/ribclient.dir/RIBClientJAVA_wrap.cxx.o CMakeFiles/ribclient.dir/ParameterList.cpp.o -L/usr/local/cppunit/1.12.1/lib -L/Users/nicholas/temp/pkg/OpenEXR/lib -L/usr/local/ILMBase/1.0.1/lib -L/Applications/Graphics/3Delight-7.0.51/lib -L. ../libutils.a -l3delight

I ended putting this in the CMakeLists.txt file to get the above desired outcome

   IF (APPLE)
SET(CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS "-dynamiclib -headerpad_max_install_names")
   ENDIF (APPLE)

If this is indeed a bug, I hope the proper fix will make it's way into 2.6.2 as I see that an RC is in the works.

Regards

_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to