cmake: Fix qt4 linking and moc.
authorPierre d'Herbemont <pdherbemont@videolan.org>
Thu, 21 Feb 2008 00:10:29 +0000 (00:10 +0000)
committerPierre d'Herbemont <pdherbemont@videolan.org>
Thu, 21 Feb 2008 00:10:29 +0000 (00:10 +0000)
extras/buildsystem/cmake/CMakeLists/qt4_CMakeLists.txt
extras/buildsystem/cmake/include/config.cmake
extras/buildsystem/cmake/include/vlc_module_funcs.cmake

index c6db4e9..c2b6a69 100644 (file)
@@ -1,10 +1,12 @@
 set(qt4_SOURCES qt4.cpp menus.cpp main_interface.cpp dialogs_provider.cpp input_manager.cpp dialogs/playlist.cpp dialogs/bookmarks.cpp dialogs/preferences.cpp dialogs/mediainfo.cpp dialogs/extended.cpp dialogs/messages.cpp dialogs/errors.cpp dialogs/interaction.cpp dialogs/sout.cpp dialogs/help.cpp dialogs/gototime.cpp dialogs/open.cpp dialogs/vlm.cpp dialogs/podcast_configuration.cpp components/extended_panels.cpp components/info_panels.cpp components/preferences_widgets.cpp components/complete_preferences.cpp components/simple_preferences.cpp components/open_panels.cpp components/interface_widgets.cpp components/playlist/playlist_model.cpp components/playlist/playlist_item.cpp components/playlist/standardpanel.cpp components/playlist/playlist.cpp components/playlist/selector.cpp util/input_slider.cpp util/customwidgets.cpp util/registry.cpp )
 set(qt4_UIS ui/equalizer.ui ui/v4l2.ui ui/video_effects.ui ui/open_file.ui ui/open_disk.ui ui/open_net.ui ui/open_capture.ui ui/open.ui ui/podcast_configuration.ui ui/sprefs_audio.ui ui/sprefs_input.ui ui/sprefs_interface.ui ui/sprefs_subtitles.ui ui/sprefs_video.ui ui/streampanel.ui ui/sout.ui ui/vlm.ui ) 
-
+set(qt4_HEADERS menus.hpp main_interface.hpp dialogs_provider.hpp input_manager.hpp dialogs/playlist.hpp dialogs/bookmarks.hpp dialogs/mediainfo.hpp dialogs/extended.hpp dialogs/messages.hpp dialogs/errors.hpp dialogs/preferences.hpp dialogs/interaction.hpp dialogs/sout.hpp dialogs/help.hpp dialogs/gototime.hpp dialogs/open.hpp dialogs/vlm.hpp dialogs/podcast_configuration.hpp components/extended_panels.hpp components/info_panels.hpp components/preferences_widgets.hpp components/complete_preferences.hpp components/simple_preferences.hpp components/open_panels.hpp components/interface_widgets.hpp components/playlist/playlist_model.hpp components/playlist/playlist_item.hpp components/playlist/panels.hpp components/playlist/selector.hpp util/input_slider.hpp util/customwidgets.hpp util/qvlcframe.hpp util/registry.hpp  )
 if(QT4_FOUND)
     include_directories(${CMAKE_CURRENT_BINARY_DIR})
-    qt4_automoc(${qt4_SOURCES})
+    vlc_get_module_compile_flags( MOC_FLAGS qt4 )
+    vlc_qt4_generate_moc(qt4_MOCS "${MOC_FLAGS}" ${qt4_HEADERS})
     vlc_qt4_wrap_ui(qt4_UIS_H ${qt4_UIS})
 endif(QT4_FOUND)
-vlc_add_module(qt4 ${qt4_SOURCES} ${qt4_UIS_H})
+
+vlc_add_module(qt4 ${qt4_SOURCES} ${qt4_MOCS} ${qt4_UIS})
 
index 8da5924..f658ce5 100644 (file)
@@ -434,7 +434,7 @@ if(QT4_FOUND)
   vlc_check_include_files (qt.h)
   vlc_enable_modules(qt4)
   vlc_add_module_compile_flag(qt4 ${QT_CFLAGS} )
-  vlc_module_add_link_libraries(qt4 ${QT_LIBRARIES})
+  vlc_module_add_link_libraries(qt4 ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
 
   # Define our own qt4_wrap_ui macro to match wanted behaviour
   MACRO (VLC_QT4_WRAP_UI outfiles )
@@ -451,6 +451,22 @@ if(QT4_FOUND)
     ENDFOREACH (it)
   ENDMACRO (VLC_QT4_WRAP_UI)
 
+  MACRO (VLC_QT4_GENERATE_MOC outfiles flags )
+    FOREACH (it ${ARGN})
+     string(REPLACE ".hpp" ".moc.cpp" outfile "${it}")
+      GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE)
+      SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/${outfile})
+      ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
+        COMMAND mkdir -p `dirname ${outfile}`
+        COMMAND ${QT_MOC_EXECUTABLE}
+        ARGS ${flags} -f -o ${outfile} ${infile}
+       MAIN_DEPENDENCY ${infile}
+       VERBATIM)
+      SET(${outfiles} ${${outfiles}} ${outfile})
+    ENDFOREACH (it)
+  ENDMACRO (VLC_QT4_GENERATE_MOC)
+
+
 endif(QT4_FOUND)
 
 find_package(OpenGL)
@@ -514,4 +530,5 @@ set(CMAKE_REQUIRED_INCLUDES)
 ###########################################################
 # Final configuration
 ###########################################################
+add_definitions(-DHAVE_CONFIG_H)
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
index b3933db..35357b8 100644 (file)
@@ -6,8 +6,9 @@ MACRO(vlc_add_module module_name)
         if( NOT ${ENABLE_NO_SYMBOL_CHECK} )
             vlc_module_add_link_libraries( ${module_name} libvlc )
         endif( NOT ${ENABLE_NO_SYMBOL_CHECK} )
-        set_target_properties( ${module_name}_plugin PROPERTIES COMPILE_FLAGS
-                "-D__PLUGIN__ -DMODULE_NAME=${module_name} -DMODULE_NAME_IS_${module_name} -I${CMAKE_CURRENT_SOURCE_DIR} ${VLC_${module_name}_COMPILE_FLAG}" )
+        vlc_get_module_compile_flags(compile_flags ${module_name})
+       set_target_properties( ${module_name}_plugin PROPERTIES COMPILE_FLAGS
+                 "${compile_flags}" )
         set_target_properties( ${module_name}_plugin PROPERTIES LINK_FLAGS "${VLC_${module_name}_LINK_FLAGS}" )
         if (VLC_${module_name}_LINK_LIBRARIES)
             target_link_libraries( ${module_name}_plugin ${VLC_${module_name}_LINK_LIBRARIES})
@@ -16,6 +17,10 @@ MACRO(vlc_add_module module_name)
     endif(ENABLE_VLC_MODULE_${module_name})
 ENDMACRO(vlc_add_module)
 
+MACRO(vlc_get_module_compile_flags var module_name)
+    set(${var} "-D__PLUGIN__ -DMODULE_NAME=${module_name} -DMODULE_NAME_IS_${module_name} -I${CMAKE_CURRENT_SOURCE_DIR} ${VLC_${module_name}_COMPILE_FLAG}")
+ENDMACRO(vlc_get_module_compile_flags)
+
 MACRO(vlc_register_modules module_state)
     foreach( module_name ${ARGN} )
         set( STATE module_state)