ENABLE_TESTING()
CMAKE_MINIMUM_REQUIRED(VERSION 2.2)
-
# try to include our cmake modules
SET (CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/makelib)
FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)
+# configure python
+SET(USE_PYTHON 1)
+
+# include packages we depend on
+FIND_PACKAGE(Qt4)
+SET(QT_USE_QTOPENGL 1)
+IF(QT_ASSISTANT_LIB)
+ SET(QT_USE_QTNETWORK 1)
+ SET(QT_USE_QTASSISTANT 1)
+ENDIF(QT_ASSISTANT_LIB)
+INCLUDE( ${QT_USE_FILE} )
+FIND_PACKAGE(OpenGL)
+FIND_PACKAGE(Boost)
+FIND_PACKAGE(PythonLibs)
+
# all of our source files al relative to the root of our project
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
ADD_SUBDIRECTORY( doc )
ADD_SUBDIRECTORY( qui )
ADD_SUBDIRECTORY( py )
+SET(MAIN_SOURCES
+ qui/mussagl.cpp)
+ADD_EXECUTABLE(mussagl WIN32 MACOSX_BUNDLE ${MAIN_SOURCES} )
+
+TARGET_LINK_LIBRARIES(mussagl
+ mussa_core
+ mussa_qui
+ ${QT_LIBRARIES}
+ ${OPENGL_gl_LIBRARY}
+ ${BOOST_PROGRAM_OPTIONS_LIBRARY}
+ ${BOOST_FILESYSTEM_LIBRARY}
+ )
+
+IF(USE_PYTHON)
+ INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
+ SET(PYTHON_CFLAGS "-DUSE_PYTHON")
+ TARGET_LINK_LIBRARIES(mussagl
+ mussa_py
+ ${BOOST_PYTHON_LIBRARY}
+ optimized ${PYTHON_LIBRARIES}
+ debug ${PYTHON_DEBUG_LIBRARIES}
+ )
+ENDIF(USE_PYTHON)
+
+GET_MUSSA_COMPILE_FLAGS(MAIN_CFLAGS)
+GET_MUSSA_LINK_FLAGS(MAIN_LDFLAGS)
+
+SET_SOURCE_FILES_PROPERTIES(
+ ${MAIN_SOURCES}
+ PROPERTIES
+ COMPILE_FLAGS "${MAIN_CFLAGS} ${PYTHON_CFLAGS}"
+)
+SET_TARGET_PROPERTIES(
+ mussagl PROPERTIES
+ COMPILE_FLAGS "${MAIN_CFLAGS}"
+ LINK_FLAGS "${MAIN_LDFLAGS}"
+)
+
+# we need Cocoa in order to find where our base directory is (AKA bundle)
+IF(APPLE)
+ SET(COCOA_LIBRARY "-framework Cocoa")
+ TARGET_LINK_LIBRARIES(mussagl ${COCOA_LIBRARY})
+ SET(MACOSX_BUNDLE_BUNDLE_NAME "Mussa")
+ SET(MACOSX_BUNDLE_LONG_VERSION_STRING "Mussa Copyright 2004-2006 California Institute of Technology")
+ SET(MACOSX_BUNDLE_COPYRIGHT "Copyright 2004-2006 California Institute of Technology")
+ SET(MACOSX_BUNDLE_ICON_FILE "mussa")
+
+ SET(APP_DIR ${CMAKE_BINARY_DIR}/mussagl.app/Contents)
+ SET(RESOURCE_DIR ${APP_DIR}/Resources})
+
+ ADD_CUSTOM_TARGET(mussa.icns ALL
+ cmake -E copy_directory ${CMAKE_SOURCE_DIR}/icons/osx
+ ${APP_DIR}
+ )
+ENDIF(APPLE)
+
+
sequence.cpp
)
- #SET_SOURCE_FILES_PROPERTIES(${SOURCES} COM
-
ADD_LIBRARY(mussa MODULE ${SOURCES})
- # ADD_LIBRARY(mussa_py STATIC ${SOURCES})
+ ADD_LIBRARY(mussa_py STATIC ${SOURCES})
ADD_CUSTOM_TARGET(mussa.so ALL
COMMAND cp libmussa.so mussa.so
DEPENDS mussa)
${QT_LIBRARIES}
)
+ GET_MUSSA_COMPILE_FLAGS(PY_CFLAGS)
+ GET_MUSSA_LINK_FLAGS(PY_LDFLAGS)
+ SET_SOURCE_FILES_PROPERTIES(
+ ${SOURCES}
+ PROPERTIES
+ COMPILE_FLAGS "${PY_CFLAGS}"
+ )
+ SET_TARGET_PROPERTIES(
+ mussa mussa_py PROPERTIES
+ COMPILE_FLAGS "${PY_CFLAGS}"
+ LINK_FLAGS "${PY_LDFLAGS}"
+ )
+
IF(PYTHON_EXECUTABLE)
SET(PYTHON_TEST_DIR ${CMAKE_SOURCE_DIR}/py/test/)
ADD_TEST(sequence_py
seqbrowser/SequenceDescription.cpp
)
-SET(MAIN_SOURCES
- mussagl.cpp)
SET(RCCS ../icons.qrc)
QT4_ADD_RESOURCES(RCC_SOURCES ${RCCS})
TARGET_LINK_LIBRARIES(mussa_qui
mussa_core)
-ADD_EXECUTABLE(mussagl WIN32 MACOSX_BUNDLE ${MAIN_SOURCES} )
-
-TARGET_LINK_LIBRARIES(mussagl
- mussa_core
- mussa_qui
- ${QT_LIBRARIES}
- ${OPENGL_gl_LIBRARY}
- ${BOOST_PROGRAM_OPTIONS_LIBRARY}
- ${BOOST_FILESYSTEM_LIBRARY}
- )
-
-IF(USE_PYTHON)
- SET(CFLAGS "-DUSE_PYTHON=1 ${CFLAGS}")
- TARGET_LINK_LIBRARIES(mussagl
- ${BOOST_PYTHON_LIBRARY}
- optimized ${PYTHON_LIBRARIES}
- debug ${PYTHON_DEBUG_LIBRARIES}
- )
-ENDIF(USE_PYTHON)
-
SET_SOURCE_FILES_PROPERTIES(
- ${SOURCES} ${MAIN_SOURCES}
+ ${SOURCES}
PROPERTIES
COMPILE_FLAGS "${QUI_CFLAGS}"
)
SET_TARGET_PROPERTIES(
- mussagl mussa_qui PROPERTIES
+ mussa_qui PROPERTIES
COMPILE_FLAGS "${QUI_CFLAGS}"
LINK_FLAGS "${QUI_LDFLAGS}"
)
-# we need Cocoa in order to find where our base directory is (AKA bundle)
-IF(APPLE)
- SET(COCOA_LIBRARY "-framework Cocoa")
- TARGET_LINK_LIBRARIES(mussagl ${COCOA_LIBRARY})
- SET(MACOSX_BUNDLE_BUNDLE_NAME "Mussa")
- SET(MACOSX_BUNDLE_LONG_VERSION_STRING "Mussa Copyright 2004-2006 California Institute of Technology")
- SET(MACOSX_BUNDLE_COPYRIGHT "Copyright 2004-2006 California Institute of Technology")
- SET(MACOSX_BUNDLE_ICON_FILE "mussa")
-
- SET(APP_DIR ${CMAKE_BINARY_DIR}/qui/mussagl.app/Contents)
- SET(RESOURCE_DIR ${APP_DIR}/Resources})
-
- ADD_CUSTOM_TARGET(mussa.icns ALL
- cmake -E copy_directory ${CMAKE_SOURCE_DIR}/icons/osx
- ${APP_DIR}
- )
-ENDIF(APPLE)
ADD_SUBDIRECTORY( test )
#ifdef USE_PYTHON
#include <boost/python.hpp>
namespace py = boost::python;
+extern "C" void initmussa();
#endif
using namespace boost::filesystem;
try {
#ifdef USE_PYTHON
if (opts.runAsPythonInterpeter) {
+ PyImport_AppendInittab("mussa", &initmussa);
Py_Initialize();
- py::object main_module((py::handle<>(py::borrowed(PyImport_AddModule("__main__")))));
- py::object main_namespace = main_module.attr("__dict__");
-
- py::handle<> ignored((PyRun_String(
- //"from IPython.Shell import IPShellEmbed\n"
- //"shell = IPShellEmbed(['mussa'], '')\n",
- //"import mussa\n"
- "def square(x):\n"
- " r = x * x\n"
- " print 'the square is %d' % (r)\n"
- " return r\n",
- Py_file_input,
- main_namespace.ptr(),
- main_namespace.ptr())
- ));
- py::object square = main_module.attr("square");
- int result = py::extract<int>(square(3));
- std::cout << "C++ has " << result << std::endl;
PyRun_InteractiveLoop(stdin, "mussa");
} else
#endif /* USE_PYTHON */