Build universal binaries on OS X
[mussa.git] / qui / CMakeLists.txt
index 7a62c7aeabcc1c8ada5bd6f42b7acd7728526b58..bead7f8036017707a46d3e845fcf4ae34408b494 100644 (file)
@@ -4,19 +4,25 @@ FIND_PROGRAM(QT_MOC_EXECUTABLE moc-qt4 )
 
 FIND_PACKAGE(Qt4)
 SET(QT_USE_QTOPENGL 1)
-SET(QT_USE_QTASSISTANT 1)
-SET(QT_USE_QTNETWORK 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     
       ImageScaler.hpp         
       IntAction.hpp           
       MussaAlignedWindow.hpp  
       MussaWindow.hpp
+      SequenceLocationModel.hpp
+      SubanalysisWindow.hpp
       ThresholdWidget.hpp
       ZoomWidget.hpp
       motif_editor/MotifDetail.hpp
@@ -26,7 +32,6 @@ 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
@@ -39,6 +44,8 @@ SET(GUI_SOURCES
       IntAction.cpp            
       MussaAlignedWindow.cpp
       MussaWindow.cpp
+      SequenceLocationModel.cpp
+      SubanalysisWindow.cpp
       ThresholdWidget.cpp
       ZoomWidget.cpp
       motif_editor/MotifDetail.cpp
@@ -56,21 +63,27 @@ SET(GUI_SOURCES
       seqbrowser/SequenceDescription.cpp
 
      )
-SET(SOURCES
+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})
+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})
-ADD_LIBRARY(mussa_qui STATIC ${MOC_SOURCES} ${GUI_SOURCES} ${RCC_SOURCE})
+                    ${QT_INCLUDES}
+                    ${BOOST_INCLUDE_DIR} )
+
+ADD_LIBRARY(mussa_qui STATIC ${SOURCES})
 TARGET_LINK_LIBRARIES(mussa_qui 
                         mussa_core)
-ADD_EXECUTABLE(mussagl WIN32 MACOSX_BUNDLE ${SOURCES} )
-# ${SOURCES} ${MOC_SOURCES} ${RCC_SOURCE} )
-LINK_DIRECTORIES(${MUSSA_BINARY_DIR}/alg
-                 ${MUSSA_BINARY_DIR}/py)
+
+ADD_EXECUTABLE(mussagl WIN32 MACOSX_BUNDLE ${MAIN_SOURCES} )
+
 TARGET_LINK_LIBRARIES(mussagl 
                         mussa_core
                         mussa_qui
@@ -79,7 +92,9 @@ TARGET_LINK_LIBRARIES(mussagl
                         ${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}
@@ -87,3 +102,33 @@ IF(USE_PYTHON)
                         )
 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 )