From 6b3a5c1fd297ad97ab27feac6ec36b61e8c88621 Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Fri, 21 Jul 2006 23:47:36 +0000 Subject: [PATCH] Build universal binaries on OS X 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 | 19 ++++++++++++++----- alg/test/CMakeLists.txt | 23 +++++++++++++++++------ alg/tsf/CMakeLists.txt | 21 ++++++++++++++++++++- makelib/Platform.cmake | 24 ++++++++++++++++++++++++ qui/CMakeLists.txt | 27 +++++++++++++++++---------- 5 files changed, 92 insertions(+), 22 deletions(-) create mode 100644 makelib/Platform.cmake diff --git a/alg/CMakeLists.txt b/alg/CMakeLists.txt index a04c0e2..5d36611 100644 --- a/alg/CMakeLists.txt +++ b/alg/CMakeLists.txt @@ -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 ) diff --git a/alg/test/CMakeLists.txt b/alg/test/CMakeLists.txt index 70e505a..4926dc5 100644 --- a/alg/test/CMakeLists.txt +++ b/alg/test/CMakeLists.txt @@ -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}" +) + diff --git a/alg/tsf/CMakeLists.txt b/alg/tsf/CMakeLists.txt index cfb8fd1..03bde51 100644 --- a/alg/tsf/CMakeLists.txt +++ b/alg/tsf/CMakeLists.txt @@ -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 index 0000000..654d373 --- /dev/null +++ b/makelib/Platform.cmake @@ -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) + diff --git a/qui/CMakeLists.txt b/qui/CMakeLists.txt index a763497..bead7f8 100644 --- a/qui/CMakeLists.txt +++ b/qui/CMakeLists.txt @@ -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 ) -- 2.30.2