CMakeLists.txt
changeset 31 e404cd1c7077
parent 29 23fa36d480fb
child 32 9a6164bc805c
--- a/CMakeLists.txt	Mon May 21 03:38:51 2012 +0300
+++ b/CMakeLists.txt	Mon May 21 19:10:25 2012 +0300
@@ -18,8 +18,38 @@
 project(pep C) 
 set(PROJECT_VERSION "0.0.3")
 
+set(HANDLER_LIST mood tune geoloc activity)
+set(MODULE_LIST pep)
+foreach(HANDLER IN LISTS HANDLER_LIST)
+	list(APPEND MODULE_LIST ${HANDLER} pep_${HANDLER})
+endforeach(HANDLER)
+
 ## User settable options
- 
+option(DEBUG "Enable debugging symbols" OFF)
+foreach(HANDLER IN LISTS HANDLER_LIST)
+	string(TOUPPER ${HANDLER} UPHANDLER)
+	set(HOOK_${UPHANDLER}_IN "${HANDLER}-in"   CACHE TEXT "${HANDLER} incoming event hook name")
+	set(HOOK_${UPHANDLER}_OUT "${HANDLER}-out" CACHE TEXT "${HANDLER} outgoing event hook name")
+endforeach(HANDLER)
+set(OPT_TUNE_PAUSE_IS_STOP "pep_tune_pause_is_stop" CACHE TEXT "Tune pause is stop option name")
+set(OPT_TUNE_INTERVAL      "pep_tune_interval"      CACHE TEXT "Tune intevral option name")
+set(OPT_GEOLOC_INTERVAL    "pep_geoloc_interval"    CACHE TEXT "Geoloc interval option name")
+
+set(PEP_DESCRIPTION          "Common listener for PEP events")
+set(PEP_MOOD_DESCRIPTION     "PEP mood event handler")
+set(PEP_TUNE_DESCRIPTION     "PEP tune event handler\\n Options: ${OPT_TUNE_INTERVAL}, ${OPT_TUNE_PAUSE_IS_STOP}")
+set(PEP_GEOLOC_DESCRIPTION   "PEP geoloc event handler\\n Options: ${OPT_GEOLOC_INTERVAL}")
+set(PEP_ACTIVITY_DESCRIPTION "PEP activity event handler")
+set(MOOD_DESCRIPTION         "Mood event handler (ui)\\n Command: /mood")
+set(TUNE_DESCRIPTION         "Tune event handler (ui)\\n Command: /tune")
+set(GEOLOC_DESCRIPTION       "Geolocation event handler (ui)\\n Command: /geoloc")
+set(ACTIVITY_DESCRIPTION     "User activity event handler (ui)\\n Command: /activity")
+
+foreach(AVMODULE IN LISTS MODULE_LIST)
+	string(TOUPPER ${AVMODULE} AVMODULE)
+	execute_PROCESS(COMMAND echo -n "${${AVMODULE}_DESCRIPTION}" COMMAND sed -e "s/\\\\n/\\n\\t/g" OUTPUT_VARIABLE ${AVMODULE}_DESCRIPTION_AVV)
+endforeach(AVMODULE)
+
 ## Check for build dependencies
 find_package(PkgConfig REQUIRED) 
 pkg_check_modules(GLIB REQUIRED glib-2.0) 
@@ -35,44 +65,30 @@
 				 ${MCABBER_LIBRARY_DIRS})
 
 ## Target definitions
-add_library(pep          MODULE pep.c pep.h) 
-add_library(mood         MODULE mood.c mood.h) 
-add_library(pep_mood     MODULE pep_mood.c mood.h pep.h) 
-add_library(tune         MODULE tune.c tune.h) 
-add_library(pep_tune     MODULE pep_tune.c tune.h pep.h) 
-add_library(geoloc       MODULE geoloc.c geoloc.h) 
-add_library(pep_geoloc   MODULE pep_geoloc.c geoloc.h pep.h) 
-add_library(activity     MODULE activity.c activity.h) 
-add_library(pep_activity MODULE pep_activity.c activity.h pep.h) 
+add_library(pep MODULE pep.c pep.h) 
+foreach(HANDLER IN LISTS HANDLER_LIST)
+	add_library(${HANDLER}     MODULE ${HANDLER}.c pep_${HANDLER}.h)
+	add_library(pep_${HANDLER} MODULE pep_${HANDLER}.c pep_${HANDLER}.h pep.h)
+endforeach(HANDLER)
 
 ## Compiler setup
 if(DEBUG)
 		set(DEBUG_COMPILE_FLAGS "-g")
 endif()
-configure_file(config.h.in config.h)
-include_directories(SYSTEM ${GLIB_INCLUDE_DIRS} 
-                    ${LM_INCLUDE_DIRS}
-					${MCABBER_INCLUDE_DIRS})
-target_link_libraries(pep          ${GLIB_LIBRARIES} ${LM_LIBRARIES} ${MCABBER_LIBRARIES})
-target_link_libraries(mood         ${GLIB_LIBRARIES}                 ${MCABBER_LIBRARIES})
-target_link_libraries(pep_mood     ${GLIB_LIBRARIES} ${LM_LIBRARIES} ${MCABBER_LIBRARIES})
-target_link_libraries(tune         ${GLIB_LIBRARIES}                 ${MCABBER_LIBRARIES})
-target_link_libraries(pep_tune     ${GLIB_LIBRARIES} ${LM_LIBRARIES} ${MCABBER_LIBRARIES})
-target_link_libraries(geoloc       ${GLIB_LIBRARIES}                 ${MCABBER_LIBRARIES})
-target_link_libraries(pep_geoloc   ${GLIB_LIBRARIES} ${LM_LIBRARIES} ${MCABBER_LIBRARIES})
-target_link_libraries(activity     ${GLIB_LIBRARIES}                 ${MCABBER_LIBRARIES})
-target_link_libraries(pep_activity ${GLIB_LIBRARIES} ${LM_LIBRARIES} ${MCABBER_LIBRARIES})
-include_directories(${pep_SOURCE_DIR} 
-                    ${pep_BINARY_DIR})
-set_target_properties(pep          PROPERTIES COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
-set_target_properties(mood         PROPERTIES COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
-set_target_properties(pep_mood     PROPERTIES COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
-set_target_properties(tune         PROPERTIES COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
-set_target_properties(pep_tune     PROPERTIES COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
-set_target_properties(geoloc       PROPERTIES COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
-set_target_properties(pep_geoloc   PROPERTIES COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
-set_target_properties(activity     PROPERTIES COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
-set_target_properties(pep_activity PROPERTIES COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
+configure_file(config.h.in       config.h)
+foreach(HANDLER IN LISTS HANDLER_LIST)
+	configure_file(pep_${HANDLER}.h.in pep_${HANDLER}.h)
+endforeach(HANDLER)
+include_directories(SYSTEM ${GLIB_INCLUDE_DIRS} ${LM_INCLUDE_DIRS} ${MCABBER_INCLUDE_DIRS})
+target_link_libraries(pep ${GLIB_LIBRARIES} ${LM_LIBRARIES} ${MCABBER_LIBRARIES})
+foreach(HANDLER IN LISTS HANDLER_LIST)
+	target_link_libraries(${HANDLER}     ${GLIB_LIBRARIES}                 ${MCABBER_LIBRARIES})
+	target_link_libraries(pep_${HANDLER} ${GLIB_LIBRARIES} ${LM_LIBRARIES} ${MCABBER_LIBRARIES})
+endforeach(HANDLER)
+include_directories(${pep_SOURCE_DIR} ${pep_BINARY_DIR})
+foreach(AVMODULE IN LISTS MODULE_LIST)
+	set_target_properties(${AVMODULE} PROPERTIES COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
+endforeach(AVMODULE)
 
 ## Packaging information
 set(CPACK_PACKAGE_NAME libmcabber-pep)
@@ -94,22 +110,22 @@
 set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*;\\\\.swp;~$;/build/;\\\\.tar\\\\.;\\\\.deb;\\\\.so")
 include(CPack)
 
-configure_file(avv/pep.in          avv/pep)
-configure_file(avv/mood.in         avv/mood)
-configure_file(avv/pep_mood.in     avv/pep_mood)
-configure_file(avv/tune.in         avv/tune)
-configure_file(avv/pep_tune.in     avv/pep_tune)
-configure_file(avv/geoloc.in       avv/geoloc)
-configure_file(avv/pep_geoloc.in   avv/pep_geoloc)
-configure_file(avv/activity.in     avv/activity)
-configure_file(avv/pep_activity.in avv/pep_activity)
+foreach(AVMODULE IN LISTS MODULE_LIST)
+	configure_file(avv/${AVMODULE}.in avv/${AVMODULE})
+endforeach(AVMODULE)
+
+configure_file(pep.rc.in pep.rc @ONLY)
 
 ## Installation
-install(TARGETS pep mood pep_mood tune pep_tune geoloc pep_geoloc activity pep_activity DESTINATION lib/mcabber) 
-install(FILES pep.rc COPYING TODO README DESTINATION share/doc/${CPACK_PACKAGE_NAME})
-install(DIRECTORY doc/ DESTINATION share/doc/${CPACK_PACKAGE_NAME})
-install(FILES pep.h mood.h tune.h geoloc.h activity.h DESTINATION include/mcabber)
-install(DIRECTORY help DESTINATION share/mcabber)
-install(DIRECTORY ${PROJECT_BINARY_DIR}/avv/ DESTINATION share/mcabber/avv/modules)
+install(TARGETS ${MODULE_LIST} DESTINATION lib/mcabber) 
+install(FILES ${PROJECT_BINARY_DIR}/pep.rc COPYING TODO README DESTINATION share/doc/${CPACK_PACKAGE_NAME})
+install(DIRECTORY doc/ DESTINATION share/doc/${CPACK_PACKAGE_NAME} PATTERN "*~" EXCLUDE)
+install(FILES pep.h
+              ${PROJECT_BINARY_DIR}/pep_mood.h
+			  ${PROJECT_BINARY_DIR}/pep_tune.h
+			  ${PROJECT_BINARY_DIR}/pep_geoloc.h
+			  ${PROJECT_BINARY_DIR}/pep_activity.h DESTINATION include/mcabber)
+install(DIRECTORY help DESTINATION share/mcabber PATTERN "*~" EXCLUDE)
+install(DIRECTORY ${PROJECT_BINARY_DIR}/avv/ DESTINATION share/mcabber/avv/modules PATTERN "*~" EXCLUDE)
 
 ## The End ## vim: se ts=4: ##