CMakeLists.txt
changeset 143 4232a5da1af2
parent 142 7e8f523b66af
child 144 690b5524b895
equal deleted inserted replaced
142:7e8f523b66af 143:4232a5da1af2
    14 # You should have received a copy of the GNU General Public License
    14 # You should have received a copy of the GNU General Public License
    15 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    15 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    16 
    16 
    17 cmake_minimum_required(VERSION 2.6)
    17 cmake_minimum_required(VERSION 2.6)
    18 project(lua C)
    18 project(lua C)
    19 set(PROJECT_VERSION "0.0.1")
    19 set(PROJECT_VERSION "0.0.2")
    20 
    20 
    21 ## User options
    21 ## User options
    22 option(DEBUG "Enable debugging output" ON)
    22 option(DEBUG                 "Enable debugging output"                                                           ON)
    23 option(LLM_CONNECTION_ENABLE "Enable exposing of mcabber loudmouth connection to lua" ON)
    23 option(WANT_LUA52            "Use lua 5.2 instead of 5.1"                                                       OFF)
    24 option(LLM_LOG_HANDLER "Enable registration of log messages handler for lua-loudmouth library's messages" ON)
    24 option(LLM_CONNECTION_ENABLE "Enable exposing of mcabber loudmouth connection to lua"                            ON)
       
    25 option(LLM_LOG_HANDLER       "Enable registration of log messages handler for lua-loudmouth library's messages"  ON)
    25 set(ML_SOURCE_PRIORITY G_PRIORITY_HIGH_IDLE CACHE STRING "Glib event source priority for timeout and bgread")
    26 set(ML_SOURCE_PRIORITY G_PRIORITY_HIGH_IDLE CACHE STRING "Glib event source priority for timeout and bgread")
    26 set(ML_BGREAD_BUFFER 4096 CACHE STRING "Background pipe reading buffer size")
    27 set(ML_BGREAD_BUFFER   4096                 CACHE STRING "Background pipe reading buffer size")
    27 
    28 
    28 ## Gather information about system
    29 ## Gather information about system
    29 find_package(Lua51 REQUIRED)
       
    30 find_package(PkgConfig REQUIRED)
    30 find_package(PkgConfig REQUIRED)
       
    31 if(NOT WANT_LUA52)
       
    32 	find_package(Lua51)
       
    33 endif()
       
    34 if(WANT_LUA52 OR NOT LUA51_FOUND)
       
    35 	pkg_check_modules(LUA REQUIRED lua5.2)
       
    36 	set(LUA_VERSION "5.2")
       
    37 	set(HAVE_LUA52  "1")
       
    38 else()
       
    39 	set(LUA_VERSION "5.1")
       
    40 	set(LUA_INCLUDE_DIRS ${LUA_INCLUDE_DIR})
       
    41 endif()
    31 pkg_check_modules(GLIB REQUIRED glib-2.0)
    42 pkg_check_modules(GLIB REQUIRED glib-2.0)
    32 pkg_check_modules(GMODULE REQUIRED gmodule-2.0)
    43 pkg_check_modules(GMODULE REQUIRED gmodule-2.0)
    33 pkg_check_modules(MCABBER REQUIRED mcabber)
    44 pkg_check_modules(MCABBER REQUIRED mcabber)
    34 find_program(DOCGEN_EXECUTABLE NAMES docgen.pl docgen DOC "Docgen documentation generator script (optional)")
    45 find_program(DOCGEN_EXECUTABLE NAMES docgen.pl docgen DOC "Docgen documentation generator script (optional)")
    35 include(CheckCSourceCompiles)
    46 include(CheckCSourceCompiles)
    51 add_library(lua MODULE lua.c util.c)
    62 add_library(lua MODULE lua.c util.c)
    52 get_target_property(lua_SOURCES lua SOURCES)
    63 get_target_property(lua_SOURCES lua SOURCES)
    53 
    64 
    54 ## Set up compiler
    65 ## Set up compiler
    55 configure_file(config.h.in config.h ESCAPE_QUOTES)
    66 configure_file(config.h.in config.h ESCAPE_QUOTES)
    56 include_directories(SYSTEM ${LUA_INCLUDE_DIR}
    67 include_directories(SYSTEM ${LUA_INCLUDE_DIRS}
    57 					${GLIB_INCLUDE_DIRS}
    68 					${GLIB_INCLUDE_DIRS}
    58 					${GMODULE_INCLUDE_DIRS}
    69 					${GMODULE_INCLUDE_DIRS}
    59 					${MCABBER_INCLUDE_DIRS})
    70 					${MCABBER_INCLUDE_DIRS})
    60 target_link_libraries(lua ${LUA_LIBRARIES}
    71 target_link_libraries(lua ${LUA_LIBRARIES}
    61 					  ${GLIB_LIBRARIES}
    72 					  ${GLIB_LIBRARIES}
    65 					${lua_BINARY_DIR})
    76 					${lua_BINARY_DIR})
    66 set_target_properties(lua PROPERTIES COMPILE_FLAGS "-Wall")
    77 set_target_properties(lua PROPERTIES COMPILE_FLAGS "-Wall")
    67 
    78 
    68 ## Extra targets
    79 ## Extra targets
    69 if(DOCGEN_EXECUTABLE)
    80 if(DOCGEN_EXECUTABLE)
    70 	add_custom_command(OUTPUT ${lua_BINARY_DIR}/lua.html COMMAND ${DOCGEN_EXECUTABLE} -f html -t "Documentation for Lua module for MCabber" -o ${lua_BINARY_DIR}/lua.html -- ${lua_SOURCES} DEPENDS ${DOCGEN_EXECUTABLE} ${lua_SOURCES} WORKING_DIRECTORY ${lua_SOURCE_DIR})
    81 	add_custom_command(OUTPUT ${lua_BINARY_DIR}/lua.html      COMMAND ${DOCGEN_EXECUTABLE} -f html -t "Documentation for Lua module for MCabber" -o ${lua_BINARY_DIR}/lua.html      -- ${lua_SOURCES} DEPENDS ${DOCGEN_EXECUTABLE} ${lua_SOURCES} WORKING_DIRECTORY ${lua_SOURCE_DIR})
    71 	add_custom_target(doc ALL DEPENDS ${lua_BINARY_DIR}/lua.html)
    82 	add_custom_target(doc    ALL DEPENDS ${lua_BINARY_DIR}/lua.html)
    72 	add_custom_command(OUTPUT ${lua_SOURCE_DIR}/docs/api.mdwn COMMAND ${DOCGEN_EXECUTABLE} -f mdwn -t "Documentation for Lua module for MCabber" -o ${lua_SOURCE_DIR}/docs/api.mdwn -- ${lua_SOURCES} DEPENDS ${DOCGEN_EXECUTABLE} ${lua_SOURCES} WORKING_DIRECTORY ${lua_SOURCE_DIR})
    83 	add_custom_command(OUTPUT ${lua_SOURCE_DIR}/docs/api.mdwn COMMAND ${DOCGEN_EXECUTABLE} -f mdwn -t "Documentation for Lua module for MCabber" -o ${lua_SOURCE_DIR}/docs/api.mdwn -- ${lua_SOURCES} DEPENDS ${DOCGEN_EXECUTABLE} ${lua_SOURCES} WORKING_DIRECTORY ${lua_SOURCE_DIR})
    73 	add_custom_target(update_api DEPENDS ${lua_SOURCE_DIR}/docs/api.mdwn)
    84 	add_custom_target(update_api DEPENDS ${lua_SOURCE_DIR}/docs/api.mdwn)
    74 endif()
    85 endif()
    75 
    86 
    76 ## Packaging information
    87 ## Packaging information
    77 set(CPACK_PACKAGE_NAME libmcabber-lua)
    88 set(CPACK_PACKAGE_NAME                libmcabber-lua)
    78 set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
    89 set(CPACK_PACKAGE_VERSION             ${PROJECT_VERSION})
    79 set(CPACK_PACKAGE_VENDOR "IsBear")
    90 set(CPACK_PACKAGE_VENDOR              "IsBear")
    80 set(CPACK_PACKAGE_CONTACT "Myhailo Danylenko <isbear@ukrpost.net>")
    91 set(CPACK_PACKAGE_CONTACT             "Myhailo Danylenko <isbear@ukrpost.net>")
    81 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Mcabber lua module")
    92 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Mcabber lua module")
    82 set(CPACK_PACKAGE_DESCRIPTION_FILE ${lua_SOURCE_DIR}/README)
    93 set(CPACK_PACKAGE_DESCRIPTION_FILE    ${lua_SOURCE_DIR}/README)
    83 set(CPACK_RESOURCE_FILE_LICENSE ${lua_SOURCE_DIR}/COPYING)
    94 set(CPACK_RESOURCE_FILE_LICENSE       ${lua_SOURCE_DIR}/COPYING)
    84 set(CPACK_RESOURCE_FILE_README ${lua_SOURCE_DIR}/README)
    95 set(CPACK_RESOURCE_FILE_README        ${lua_SOURCE_DIR}/README)
    85 set(CPACK_RESOURCE_FILE_WELCOME ${lua_SOURCE_DIR}/README)
    96 set(CPACK_RESOURCE_FILE_WELCOME       ${lua_SOURCE_DIR}/README)
    86 set(CPACK_SOURCE_GENERATOR TBZ2)
    97 set(CPACK_SOURCE_GENERATOR TBZ2)
    87 set(CPACK_GENERATOR DEB CACHE STRING "Binary package generator, eg DEB, RPM, TGZ, NSIS...")
    98 set(CPACK_GENERATOR                   DEB CACHE STRING "Binary package generator, eg DEB, RPM, TGZ, NSIS...")
    88 # XXX
    99 # XXX
    89 set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, liblua5.1-0, libglib2.0-0")
   100 set(CPACK_DEBIAN_PACKAGE_DEPENDS      "libc6, liblua${LUA_VERSION}-0, libglib2.0-0")
    90 set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "mcabber-lm | mcabber")
   101 set(CPACK_DEBIAN_PACKAGE_RECOMMENDS   "mcabber")
    91 set(CPACK_DEBIAN_PACKAGE_SUGGESTS "liblua5.1-posix1, liblua5.1-base64-0, liblua5.1-sha1-0")
   102 set(CPACK_DEBIAN_PACKAGE_SUGGESTS     "lua${LUA_VERSION}-posix, lua${LUA_VERSION}-base64, lua${LUA_VERSION}-sha1")
    92 set(CPACK_DEBIAN_PACKAGE_SECTION libs)
   103 set(CPACK_DEBIAN_PACKAGE_SECTION      libs)
    93 find_program(DPKG_EXECUTABLE dpkg)
   104 find_program(DPKG_EXECUTABLE dpkg DOC "Path to dpkg (optional, to detect architecture)")
    94 if(DPKG_EXECUTABLE)
   105 if(DPKG_EXECUTABLE)
    95 	execute_process(COMMAND ${DPKG_EXECUTABLE} --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
   106 	execute_process(COMMAND ${DPKG_EXECUTABLE} --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
    96 else()
   107 else()
    97 	set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386 CACHE STRING "Architecture of package")
   108 	set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386 CACHE STRING "Architecture of package")
    98 endif()
   109 endif()
    99 set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
   110 set(CPACK_PACKAGE_FILE_NAME           "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
   100 # XXX: Set package name directly to get rid of -Sources?
   111 # XXX: Set package name directly to get rid of -Sources?
   101 set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*;\\\\.swp;~$;/build/;\\\\.tar\\\\.;\\\\.deb;\\\\.so")
   112 set(CPACK_SOURCE_IGNORE_FILES         "/\\\\..*;\\\\.swp;~$;/build/;\\\\.tar\\\\.;\\\\.deb;\\\\.so")
   102 include(CPack)
   113 include(CPack)
   103 
   114 
   104 if(HAVE_MCABBER_COMPLETION_FLAGS)
   115 if(HAVE_MCABBER_COMPLETION_FLAGS)
   105 	set(AVV_COMPL_VERSION "compl:4")
   116 	set(AVV_COMPL_VERSION "compl:4")
   106 else()
   117 else()
   107 	set(AVV_COMPL_VERSION "compl:3")
   118 	set(AVV_COMPL_VERSION "compl:3")
   108 endif()
   119 endif()
   109 configure_file(lua.avv.in lua.avv)
   120 configure_file(lua.avv.in lua.avv)
   110 
   121 
   111 ## Set up installer
   122 ## Set up installer
   112 install(TARGETS lua DESTINATION lib/mcabber)
   123 install(TARGETS   lua                           DESTINATION lib/mcabber)
   113 if(DOCGEN_EXECUTABLE)
   124 if(DOCGEN_EXECUTABLE)
   114 	install(FILES ${lua_BINARY_DIR}/lua.html DESTINATION share/doc/${CPACK_PACKAGE_NAME})
   125 	install(FILES ${lua_BINARY_DIR}/lua.html    DESTINATION share/doc/${CPACK_PACKAGE_NAME})
   115 endif()
   126 endif()
   116 install(DIRECTORY examples DESTINATION share/doc/${CPACK_PACKAGE_NAME} PATTERN "*~" EXCLUDE)
   127 install(DIRECTORY examples                      DESTINATION share/doc/${CPACK_PACKAGE_NAME} PATTERN "*~" EXCLUDE)
   117 install(FILES docs/readme.mdwn docs/todo.mdwn COPYING DESTINATION share/doc/${CPACK_PACKAGE_NAME})
   128 install(FILES     docs/readme.mdwn docs/todo.mdwn COPYING DESTINATION share/doc/${CPACK_PACKAGE_NAME})
   118 install(DIRECTORY help DESTINATION share/mcabber)
   129 install(DIRECTORY help                          DESTINATION share/mcabber)
   119 install(FILES ${PROJECT_BINARY_DIR}/lua.avv DESTINATION share/mcabber/avv/modules RENAME lua)
   130 install(FILES     ${PROJECT_BINARY_DIR}/lua.avv DESTINATION share/mcabber/avv/modules RENAME lua)
   120 
   131 
   121 ## The End ## vim: se ts=4 sw=4: ##
   132 ## The End ## vim: se ts=4 sw=4: ##