Build universal binaries on OS X
[mussa.git] / qui / CMakeLists.txt
1 #deal with some debian wierdness
2 FIND_PROGRAM(QT_QMAKE_EXECUTABLE qmake-qt4 )
3 FIND_PROGRAM(QT_MOC_EXECUTABLE moc-qt4 )
4
5 FIND_PACKAGE(Qt4)
6 SET(QT_USE_QTOPENGL 1)
7 IF(QT_ASSISTANT_LIB)
8   SET(QT_USE_QTNETWORK 1)
9   SET(QT_USE_QTASSISTANT 1)
10 ENDIF(QT_ASSISTANT_LIB)
11 INCLUDE( ${QT_USE_FILE} )
12 FIND_PACKAGE(OpenGL)
13 FIND_PACKAGE(Boost)
14 FIND_PACKAGE(PythonLibs)
15
16 INCLUDE( Platform )
17
18 SET(MOC_HEADERS
19       ImageSaveDialog.hpp     
20       ImageScaler.hpp         
21       IntAction.hpp           
22       MussaAlignedWindow.hpp  
23       MussaWindow.hpp
24       SequenceLocationModel.hpp
25       SubanalysisWindow.hpp
26       ThresholdWidget.hpp
27       ZoomWidget.hpp
28       motif_editor/MotifDetail.hpp
29       motif_editor/MotifEditor.hpp
30       mussa_setup_dialog/IsFileValidator.hpp
31       mussa_setup_dialog/MussaSetupDialog.hpp
32       mussa_setup_dialog/MussaSetupWidget.hpp
33       mussa_setup_dialog/SequenceSetupFrame.hpp
34       mussa_setup_dialog/SequenceSetupWidget.hpp
35       seqbrowser/ScrollableSequenceBrowser.hpp
36       seqbrowser/SequenceBrowser.hpp
37       seqbrowser/SequenceBrowserSidebar.hpp
38       seqbrowser/SequenceBrowserWidget.hpp
39       seqbrowser/SequenceDescription.hpp
40     )
41 SET(GUI_SOURCES 
42       ImageSaveDialog.cpp      
43       ImageScaler.cpp          
44       IntAction.cpp            
45       MussaAlignedWindow.cpp
46       MussaWindow.cpp
47       SequenceLocationModel.cpp
48       SubanalysisWindow.cpp
49       ThresholdWidget.cpp
50       ZoomWidget.cpp
51       motif_editor/MotifDetail.cpp
52       motif_editor/MotifEditor.cpp
53       mussa_setup_dialog/IsFileValidator.cpp
54       mussa_setup_dialog/MussaSetupDialog.cpp
55       mussa_setup_dialog/MussaSetupWidget.cpp
56       mussa_setup_dialog/SequenceSetupFrame.cpp
57       mussa_setup_dialog/SequenceSetupWidget.cpp
58       mussa_setup_dialog/SetupInfo.cpp
59       seqbrowser/ScrollableSequenceBrowser.cpp
60       seqbrowser/SequenceBrowser.cpp
61       seqbrowser/SequenceBrowserSidebar.cpp
62       seqbrowser/SequenceBrowserWidget.cpp
63       seqbrowser/SequenceDescription.cpp
64
65      )
66 SET(MAIN_SOURCES
67       mussagl.cpp)
68 SET(RCCS ../icons.qrc)
69
70 QT4_ADD_RESOURCES(RCC_SOURCES ${RCCS})
71 QT4_WRAP_CPP(MOC_SOURCES ${MOC_HEADERS})
72 SET(SOURCES  ${MOC_SOURCES} ${GUI_SOURCES} ${RCC_SOURCES} ${MAIN_SOURCES})
73
74 GET_MUSSA_COMPILE_FLAGS(QUI_CFLAGS)
75 GET_MUSSA_LINK_FLAGS(QUI_LDFLAGS)
76
77 INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH} 
78                     ${QT_INCLUDES}
79                     ${BOOST_INCLUDE_DIR} )
80
81 ADD_LIBRARY(mussa_qui STATIC ${SOURCES})
82 TARGET_LINK_LIBRARIES(mussa_qui 
83                         mussa_core)
84
85 ADD_EXECUTABLE(mussagl WIN32 MACOSX_BUNDLE ${MAIN_SOURCES} )
86
87 TARGET_LINK_LIBRARIES(mussagl 
88                         mussa_core
89                         mussa_qui
90                         ${QT_LIBRARIES}
91                         ${OPENGL_gl_LIBRARY}
92                         ${BOOST_PROGRAM_OPTIONS_LIBRARY}
93                         ${BOOST_FILESYSTEM_LIBRARY}
94                       )
95
96 IF(USE_PYTHON)
97   SET(CFLAGS "-DUSE_PYTHON=1 ${CFLAGS}")
98   TARGET_LINK_LIBRARIES(mussagl
99                           ${BOOST_PYTHON_LIBRARY}
100                           optimized ${PYTHON_LIBRARIES}
101                           debug ${PYTHON_DEBUG_LIBRARIES}
102                         )
103 ENDIF(USE_PYTHON)
104
105 SET_SOURCE_FILES_PROPERTIES(
106   ${SOURCES} ${MAIN_SOURCES}
107   PROPERTIES
108   COMPILE_FLAGS "${QUI_CFLAGS}"
109 )
110 SET_TARGET_PROPERTIES(
111   mussagl mussa_qui PROPERTIES
112   COMPILE_FLAGS "${QUI_CFLAGS}"
113   LINK_FLAGS "${QUI_LDFLAGS}"
114 )
115
116 # we need Cocoa in order to find where our base directory is (AKA bundle)
117 IF(APPLE)
118   SET(COCOA_LIBRARY "-framework Cocoa")
119   TARGET_LINK_LIBRARIES(mussagl ${COCOA_LIBRARY})
120   SET(MACOSX_BUNDLE_BUNDLE_NAME "Mussa")
121   SET(MACOSX_BUNDLE_LONG_VERSION_STRING "Mussa Copyright 2004-2006 California Institute of Technology")
122   SET(MACOSX_BUNDLE_COPYRIGHT "Copyright 2004-2006 California Institute of Technology")
123   SET(MACOSX_BUNDLE_ICON_FILE "mussa")
124
125   SET(APP_DIR ${CMAKE_BINARY_DIR}/qui/mussagl.app/Contents)
126   SET(RESOURCE_DIR ${APP_DIR}/Resources})
127
128   ADD_CUSTOM_TARGET(mussa.icns ALL
129                     cmake -E copy_directory ${CMAKE_SOURCE_DIR}/icons/osx
130                                             ${APP_DIR}
131                    )
132 ENDIF(APPLE)
133
134 ADD_SUBDIRECTORY( test )