Build universal binaries on OS X
authorDiane Trout <diane@caltech.edu>
Fri, 21 Jul 2006 23:47:36 +0000 (23:47 +0000)
committerDiane Trout <diane@caltech.edu>
Fri, 21 Jul 2006 23:47:36 +0000 (23:47 +0000)
This large chunk of updates to mussa will build a universal on
OS X machines. This means that Qt and Boost will also need to be built as
universal binaries.

I suppose it might be nice to include some option for turning this off?

alg/CMakeLists.txt
alg/test/CMakeLists.txt
alg/tsf/CMakeLists.txt
makelib/Platform.cmake [new file with mode: 0644]
qui/CMakeLists.txt

index a04c0e2ace3a2b7924749323baa4726e78084239..5d36611b1abd464b006234ede090853714be18d6 100644 (file)
@@ -2,6 +2,7 @@ FIND_PACKAGE(OpenGL )
 FIND_PACKAGE(Boost REQUIRED)
 FIND_PACKAGE(Qt4)
 INCLUDE( ${QT_USE_FILE} )
+INCLUDE( Platform )
 
 SET(MOC_HEADERS
             mussa.hpp
@@ -24,6 +25,14 @@ SET(SOURCES annotation_colors.cpp
             sequence.cpp
             sequence_location.cpp )
 
+GET_MUSSA_COMPILE_FLAGS(ALG_CFLAGS)
+GET_MUSSA_LINK_FLAGS(ALG_LDFLAGS)
+SET_SOURCE_FILES_PROPERTIES(
+  ${SOURCES} ${MOC_SOURCES}
+  PROPERTIES
+  COMPILE_FLAGS "${ALG_CFLAGS}"
+)
+
 ADD_LIBRARY( mussa_core STATIC ${SOURCES} ${MOC_SOURCES})
 INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}
                     ${BOOST_INCLUDE_DIR}
@@ -33,10 +42,10 @@ TARGET_LINK_LIBRARIES(mussa_core
                         ${OPEN_gl_LIBRARY}
                         ${QT_LIBRARIES})
 
-# these are really only needed for gcc on AMD64
-SET_SOURCE_FILES_PROPERTIES(${SOURCES} ${MOC_SOURCES} 
-                            PROPERTIES COMPILE_FLAGS "-fPIC")
-SET_TARGET_PROPERTIES(mussa_core PROPERTIES COMPILE_FLAGS "-fPIC")
-
+SET_TARGET_PROPERTIES(
+  mussa_core PROPERTIES
+    COMPILE_FLAGS "${ALG_CFLAGS}"
+    LINK_FLAGS "${ALG_LDFLAGS}"
+)
 ADD_SUBDIRECTORY( test )
 ADD_SUBDIRECTORY( tsf )
index 70e505a6ce4745b80b24654223782a537b12c242..4926dc5986056e1edbb96329b83baf5d1c7fa906 100644 (file)
@@ -1,17 +1,21 @@
+FIND_PACKAGE(OpenGL)
+INCLUDE(FindBoost)
+INCLUDE(Platform)
+
 SET(SOURCES test_annotation_color.cpp test_color.cpp test_conserved_path.cpp
             test_flp.cpp test_glseqbrowser.cpp test_glsequence.cpp
             test_main.cpp test_mussa.cpp test_nway.cpp 
             test_sequence.cpp test_sequence_location.cpp )
 
+GET_MUSSA_COMPILE_FLAGS(ALG_TEST_CFLAGS)
+GET_MUSSA_LINK_FLAGS(ALG_TEST_LDFLAGS)
 # dont you love the number of \ you need to make sure the " shows up in
 # the C compiler?
 SET(EXAMPLE_DIR ${CMAKE_SOURCE_DIR}/examples)
-SET_SOURCE_FILES_PROPERTIES(${SOURCES} 
-                           COMPILE_FLAGS "-DEXAMPLE_DIR=\\\"${EXAMPLE_DIR}\\\""
-                           )
-
-FIND_PACKAGE(OpenGL)
-INCLUDE(FindBoost)
+SET_SOURCE_FILES_PROPERTIES(
+  ${SOURCES} 
+  COMPILE_FLAGS "-DEXAMPLE_DIR=\\\"${EXAMPLE_DIR}\\\" ${ALG_TEST_CFLAGS}"
+)
 
 ADD_EXECUTABLE(unittest ${SOURCES})
 ADD_TEST(core_test ${CMAKE_BINARY_DIR}/alg/test/unittest)
@@ -21,3 +25,10 @@ TARGET_LINK_LIBRARIES(unittest
                         ${BOOST_FILESYSTEM_LIBRARY}
                         mussa_core 
                         ${OPENGL_gl_LIBRARY})
+
+SET_TARGET_PROPERTIES(
+  unittest PROPERTIES
+    COMPILE_FLAGS "${ALG_TEST_CFLAGS}"
+    LINK_FLAGS "${ALG_TEST_LDFLAGS}"
+)
+
index cfb8fd16d28188dc91105c9d957fe7d2d8b38e07..03bde511e2663d2acbec48c2eacb3f797fe8109a 100644 (file)
@@ -1,8 +1,27 @@
 INCLUDE(FindBoost)
+INCLUDE(Platform)
+
 
 SET(SOURCES trivial_filter.cpp)
 SET(TEST_SOURCES test_tsf.cpp)
 
+GET_MUSSA_COMPILE_FLAGS(TSF_CFLAGS)
+GET_MUSSA_LINK_FLAGS(TSF_LDFLAGS)
+
+# this is a hack because the -isysroot stuff for universal binaries 
+# breaks /usr/local/include
+SET_SOURCE_FILES_PROPERTIES( 
+  ${SOURCES} ${TEST_SOURCES}
+  PROPERTIES
+  COMPILE_FLAGS "${TSF_CFLAGS}"
+)
+
 ADD_EXECUTABLE(tsf ${SOURCES} ${TEST_SOURCES} )
 TARGET_LINK_LIBRARIES(tsf ${BOOST_UNIT_TEST_LIBRARY})
-ADD_TEST(tsf ${CMAKE_BINARY_DIR}/tsf)
+ADD_TEST(tsf ${CMAKE_BINARY_DIR}/alg/tsf/tsf)
+
+SET_TARGET_PROPERTIES(
+  tsf PROPERTIES
+  COMPILE_FLAGS "${TSF_CFLAGS}"
+  LINK_FLAGS "${TSF_LDFLAGS}"
+)
diff --git a/makelib/Platform.cmake b/makelib/Platform.cmake
new file mode 100644 (file)
index 0000000..654d373
--- /dev/null
@@ -0,0 +1,24 @@
+# - Define macros for setting platform specific build options
+# Defines:
+#  
+
+MACRO(GET_MUSSA_COMPILE_FLAGS return)
+ SET(return "") 
+ IF(APPLE)
+   SET(${return}
+         ${${return}} 
+         "-isysroot /Developer/SDKS/MacOSX10.4u.sdk -arch ppc -arch i386 -I/usr/local/include"
+      )
+ ENDIF(APPLE)
+ENDMACRO(GET_MUSSA_COMPILE_FLAGS)
+
+MACRO(GET_MUSSA_LINK_FLAGS return)
+ SET(${return} "") 
+ IF(APPLE)
+   SET(${return}
+         ${${return}}
+         "-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386"
+      )
+ ENDIF(APPLE)
+ENDMACRO(GET_MUSSA_LINK_FLAGS)
+
index a7634972920cd7c7097546eca611535bdd9d3d0c..bead7f8036017707a46d3e845fcf4ae34408b494 100644 (file)
@@ -13,6 +13,8 @@ FIND_PACKAGE(OpenGL)
 FIND_PACKAGE(Boost)
 FIND_PACKAGE(PythonLibs)
 
+INCLUDE( Platform )
+
 SET(MOC_HEADERS
       ImageSaveDialog.hpp     
       ImageScaler.hpp         
@@ -69,7 +71,9 @@ QT4_ADD_RESOURCES(RCC_SOURCES ${RCCS})
 QT4_WRAP_CPP(MOC_SOURCES ${MOC_HEADERS})
 SET(SOURCES  ${MOC_SOURCES} ${GUI_SOURCES} ${RCC_SOURCES} ${MAIN_SOURCES})
 
-# these are really only needed for gcc on AMD64
+GET_MUSSA_COMPILE_FLAGS(QUI_CFLAGS)
+GET_MUSSA_LINK_FLAGS(QUI_LDFLAGS)
+
 INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH} 
                     ${QT_INCLUDES}
                     ${BOOST_INCLUDE_DIR} )
@@ -88,11 +92,9 @@ TARGET_LINK_LIBRARIES(mussagl
                         ${BOOST_PROGRAM_OPTIONS_LIBRARY}
                         ${BOOST_FILESYSTEM_LIBRARY}
                       )
+
 IF(USE_PYTHON)
-  SET_SOURCE_FILES_PROPERTIES(${SOURCES}
-                              PROPERTIES
-                              COMPILE_FLAGS "-DUSE_PYTHON=1"
-                             )
+  SET(CFLAGS "-DUSE_PYTHON=1 ${CFLAGS}")
   TARGET_LINK_LIBRARIES(mussagl
                           ${BOOST_PYTHON_LIBRARY}
                           optimized ${PYTHON_LIBRARIES}
@@ -100,6 +102,16 @@ 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)
@@ -119,9 +131,4 @@ IF(APPLE)
                    )
 ENDIF(APPLE)
 
-# these are needed for AMD64 systems but don't hurt on 32bit
-SET_SOURCE_FILES_PROPERTIES(${SOURCES} PROPERTIES COMPILE_FLAGS "-fPIC")
-SET_TARGET_PROPERTIES(mussa_qui PROPERTIES COMPILE_FLAGS "-fPIC")
-SET_TARGET_PROPERTIES(mussagl PROPERTIES COMPILE_FLAGS "-fPIC")
-
 ADD_SUBDIRECTORY( test )