Build universal binaries on OS X
[mussa.git] / qui / CMakeLists.txt
index 56d7990934a1a15344b273f10aea2af44f7b869a..bead7f8036017707a46d3e845fcf4ae34408b494 100644 (file)
@@ -1,8 +1,19 @@
+#deal with some debian wierdness
+FIND_PROGRAM(QT_QMAKE_EXECUTABLE qmake-qt4 )
+FIND_PROGRAM(QT_MOC_EXECUTABLE moc-qt4 )
+
 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)
+
+INCLUDE( Platform )
 
 SET(MOC_HEADERS
       ImageSaveDialog.hpp     
@@ -10,6 +21,8 @@ SET(MOC_HEADERS
       IntAction.hpp           
       MussaAlignedWindow.hpp  
       MussaWindow.hpp
+      SequenceLocationModel.hpp
+      SubanalysisWindow.hpp
       ThresholdWidget.hpp
       ZoomWidget.hpp
       motif_editor/MotifDetail.hpp
@@ -19,20 +32,20 @@ SET(MOC_HEADERS
       mussa_setup_dialog/MussaSetupWidget.hpp
       mussa_setup_dialog/SequenceSetupFrame.hpp
       mussa_setup_dialog/SequenceSetupWidget.hpp
-      mussa_setup_dialog/SetupInfo.hpp
       seqbrowser/ScrollableSequenceBrowser.hpp
       seqbrowser/SequenceBrowser.hpp
       seqbrowser/SequenceBrowserSidebar.hpp
       seqbrowser/SequenceBrowserWidget.hpp
       seqbrowser/SequenceDescription.hpp
     )
-SET(SOURCES 
+SET(GUI_SOURCES 
       ImageSaveDialog.cpp      
       ImageScaler.cpp          
       IntAction.cpp            
       MussaAlignedWindow.cpp
-      mussagl.cpp
       MussaWindow.cpp
+      SequenceLocationModel.cpp
+      SubanalysisWindow.cpp
       ThresholdWidget.cpp
       ZoomWidget.cpp
       motif_editor/MotifDetail.cpp
@@ -48,19 +61,74 @@ SET(SOURCES
       seqbrowser/SequenceBrowserSidebar.cpp
       seqbrowser/SequenceBrowserWidget.cpp
       seqbrowser/SequenceDescription.cpp
+
      )
+SET(MAIN_SOURCES
+      mussagl.cpp)
 SET(RCCS ../icons.qrc)
 
-QT4_ADD_RESOURCES(RCC_SOURCE ${RCCS})
+QT4_ADD_RESOURCES(RCC_SOURCES ${RCCS})
 QT4_WRAP_CPP(MOC_SOURCES ${MOC_HEADERS})
-ADD_EXECUTABLE(mussagl WIN32 MACOSX_BUNDLE ${SOURCES} ${MOC_SOURCES} ${RCC_SOURCE})
-LINK_DIRECTORIES(${MUSSA_BINARY_DIR}/alg)
+SET(SOURCES  ${MOC_SOURCES} ${GUI_SOURCES} ${RCC_SOURCES} ${MAIN_SOURCES})
+
+GET_MUSSA_COMPILE_FLAGS(QUI_CFLAGS)
+GET_MUSSA_LINK_FLAGS(QUI_LDFLAGS)
+
+INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH} 
+                    ${QT_INCLUDES}
+                    ${BOOST_INCLUDE_DIR} )
+
+ADD_LIBRARY(mussa_qui STATIC ${SOURCES})
+TARGET_LINK_LIBRARIES(mussa_qui 
+                        mussa_core)
+
+ADD_EXECUTABLE(mussagl WIN32 MACOSX_BUNDLE ${MAIN_SOURCES} )
+
 TARGET_LINK_LIBRARIES(mussagl 
                         mussa_core
-                        ${QT_QTCORE_LIBRARY}
-                        ${QT_QTGUI_LIBRARY}
-                        ${QT_QTOPENGL_LIBRARY}
+                        mussa_qui
+                        ${QT_LIBRARIES}
                         ${OPENGL_gl_LIBRARY}
-                        ${BOOST_PROGRAM_OPTIONS_LIB}
+                        ${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}
+  PROPERTIES
+  COMPILE_FLAGS "${QUI_CFLAGS}"
+)
+SET_TARGET_PROPERTIES(
+  mussagl 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 )