CMakeLists.txt
changeset 54 6bef2082e5f9
parent 48 ef69edc792be
child 55 25f8359ed8cf
equal deleted inserted replaced
53:2dcfa81100e4 54:6bef2082e5f9
    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-lm C)
    18 project(lua-lm C)
    19 set(PROJECT_VERSION "0.9.1")
    19 set(PROJECT_VERSION "0.9.2")
    20 
    20 
    21 ## User options
    21 ## User options
    22 option(DEBUG "Enable debugging output" OFF)
    22 option(DEBUG      "Enable debugging output" OFF)
    23 set(TEST_USER "test@jabber.org" CACHE STRING "Testing: Your jabber account name")
    23 option(WANT_LUA52 "Force Lua 5.2 usage"     OFF)
    24 set(TEST_PASSWORD "greatsecret" CACHE STRING "Testing: Password for your jabber account")
    24 set(TEST_USER        "test@jabber.org" CACHE STRING "Testing: Your jabber account name")
    25 set(TEST_TO "test@jabber.org/mcabber" CACHE STRING "Testing: Target jabber entity")
    25 set(TEST_PASSWORD    "greatsecret" CACHE STRING "Testing: Password for your jabber account")
       
    26 set(TEST_TO          "test@jabber.org/mcabber" CACHE STRING "Testing: Target jabber entity")
    26 set(TEST_FINGERPRINT "00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff" CACHE STRING "Testing: Your jabber server SSL fingerprint")
    27 set(TEST_FINGERPRINT "00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff" CACHE STRING "Testing: Your jabber server SSL fingerprint")
    27 
    28 
    28 ## Gather information about system
    29 ## Gather information about system
    29 find_package(Lua51 REQUIRED)
    30 find_package(PkgConfig REQUIRED)
    30 find_program(LUA_EXECUTABLE lua lua5.1 luanoreadline)
    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(LUA_DEB_DEP "liblua5.2")
       
    38 	set(HAVE_LUA52 "1")
       
    39 else()
       
    40 	set(LUA_VERSION "5.1")
       
    41 	set(LUA_DEB_DEP "liblua5.1-0")
       
    42 	set(LUA_INCLUDE_DIRS ${LUA_INCLUDE_DIR})
       
    43 endif()
       
    44 find_program(LUA_EXECUTABLE lua${LUA_VERSION} lua luanoreadline)
    31 if(LUA_EXECUTABLE)
    45 if(LUA_EXECUTABLE)
    32 	execute_process(COMMAND ${LUA_EXECUTABLE} -e "print ( package.path )" OUTPUT_VARIABLE LUA_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
    46 	execute_process(COMMAND ${LUA_EXECUTABLE} -e "print ( package.path )"  OUTPUT_VARIABLE LUA_PATH  OUTPUT_STRIP_TRAILING_WHITESPACE)
    33 	execute_process(COMMAND ${LUA_EXECUTABLE} -e "print ( package.cpath )" OUTPUT_VARIABLE LUA_CPATH OUTPUT_STRIP_TRAILING_WHITESPACE)
    47 	execute_process(COMMAND ${LUA_EXECUTABLE} -e "print ( package.cpath )" OUTPUT_VARIABLE LUA_CPATH OUTPUT_STRIP_TRAILING_WHITESPACE)
    34 endif()
    48 endif()
    35 find_package(PkgConfig REQUIRED)
       
    36 pkg_check_modules(GLIB REQUIRED glib-2.0)
    49 pkg_check_modules(GLIB REQUIRED glib-2.0)
    37 pkg_check_modules(LM REQUIRED loudmouth-1.0)
    50 pkg_check_modules(LM REQUIRED loudmouth-1.0)
    38 include(CheckFunctionExists)
    51 include(CheckFunctionExists)
    39 set(CMAKE_REQUIRED_INCLUDES ${LM_INCLUDE_DIRS})
    52 set(CMAKE_REQUIRED_INCLUDES ${LM_INCLUDE_DIRS})
    40 set(CMAKE_REQUIRED_LIBRARIES ${LM_LIBRARIES})
    53 set(CMAKE_REQUIRED_LIBRARIES ${LM_LIBRARIES})
    52 ## Set up compiler
    65 ## Set up compiler
    53 if(DEBUG)
    66 if(DEBUG)
    54 	set(DEBUG_COMPILE_FLAGS "-g")
    67 	set(DEBUG_COMPILE_FLAGS "-g")
    55 endif()
    68 endif()
    56 configure_file(config.h.in config.h)
    69 configure_file(config.h.in config.h)
    57 include_directories(SYSTEM ${LUA_INCLUDE_DIR} ${GLIB_INCLUDE_DIRS} ${LM_INCLUDE_DIRS})
    70 include_directories(SYSTEM ${LUA_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${LM_INCLUDE_DIRS})
    58 target_link_libraries(loudmouth ${LUA_LIBRARIES} ${GLIB_LIBRARIES} ${LM_LIBRARIES})
    71 target_link_libraries(loudmouth ${LUA_LIBRARIES} ${GLIB_LIBRARIES} ${LM_LIBRARIES})
    59 include_directories(${lua-lm_SOURCE_DIR} ${lua-lm_BINARY_DIR})
    72 include_directories(${lua-lm_SOURCE_DIR} ${lua-lm_BINARY_DIR})
    60 set_target_properties(loudmouth PROPERTIES
    73 set_target_properties(loudmouth PROPERTIES
    61                       PREFIX ""
    74                       PREFIX ""
    62                       COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
    75                       COMPILE_FLAGS "-Wall ${DEBUG_COMPILE_FLAGS}")
    71 if(LUA_EXECUTABLE)
    84 if(LUA_EXECUTABLE)
    72 	add_custom_target(test COMMAND env "LUA_PATH=${lua-lm_SOURCE_DIR}/?.lua;${LUA_PATH}" "LUA_CPATH=${lua-lm_SOURCE_DIR}/?.so;${lua-lm_BINARY_DIR}/?.so;${LUA_CPATH}" "${LUA_EXECUTABLE}" "${lua-lm_SOURCE_DIR}/test.lua" "${TEST_USER}" "${TEST_PASSWORD}" "${TEST_TO}" "${TEST_FINGERPRINT}" DEPENDS loudmouth VERBATIM)
    85 	add_custom_target(test COMMAND env "LUA_PATH=${lua-lm_SOURCE_DIR}/?.lua;${LUA_PATH}" "LUA_CPATH=${lua-lm_SOURCE_DIR}/?.so;${lua-lm_BINARY_DIR}/?.so;${LUA_CPATH}" "${LUA_EXECUTABLE}" "${lua-lm_SOURCE_DIR}/test.lua" "${TEST_USER}" "${TEST_PASSWORD}" "${TEST_TO}" "${TEST_FINGERPRINT}" DEPENDS loudmouth VERBATIM)
    73 endif()
    86 endif()
    74 
    87 
    75 ## Packaging information
    88 ## Packaging information
    76 set(CPACK_PACKAGE_NAME liblua5.1-loudmouth)
    89 set(CPACK_PACKAGE_NAME lua${LUA_VERSION}-loudmouth)
    77 set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
    90 set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
    78 set(CPACK_PACKAGE_VENDOR "IsBear")
    91 set(CPACK_PACKAGE_VENDOR "IsBear")
    79 set(CPACK_PACKAGE_CONTACT "Myhailo Danylenko <isbear@ukrpost.net>")
    92 set(CPACK_PACKAGE_CONTACT "Myhailo Danylenko <isbear@ukrpost.net>")
    80 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Loudmouth XMPP client library lua interface")
    93 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Loudmouth XMPP client library lua interface")
    81 set(CPACK_PACKAGE_DESCRIPTION_FILE ${lua-lm_SOURCE_DIR}/README)
    94 set(CPACK_PACKAGE_DESCRIPTION_FILE ${lua-lm_SOURCE_DIR}/README)
    85 set(CPACK_SOURCE_GENERATOR TBZ2)
    98 set(CPACK_SOURCE_GENERATOR TBZ2)
    86 set(CPACK_GENERATOR DEB CACHE STRING "Binary package generator, eg DEB, RPM, TGZ, NSIS...")
    99 set(CPACK_GENERATOR DEB CACHE STRING "Binary package generator, eg DEB, RPM, TGZ, NSIS...")
    87 set(CPACK_DEBIAN_PACKAGE_SECTION libs)
   100 set(CPACK_DEBIAN_PACKAGE_SECTION libs)
    88 # XXX: tmp=`tempfile`; obj=${lua-lm_BINARY_DIR}/loudmouth.so; ldd $obj > $tmp; objdump -p $obj | \grep NEEDED | sed -e 's/.*NEEDED *//' | xargs -I "{}" grep -F "{}" $tmp | sed -e 's/.*=> *\(\S*\).*/\1/' | xargs dpkg -S | cut -d : -f 1 | sort -u ; \rm $tmp
   101 # XXX: tmp=`tempfile`; obj=${lua-lm_BINARY_DIR}/loudmouth.so; ldd $obj > $tmp; objdump -p $obj | \grep NEEDED | sed -e 's/.*NEEDED *//' | xargs -I "{}" grep -F "{}" $tmp | sed -e 's/.*=> *\(\S*\).*/\1/' | xargs dpkg -S | cut -d : -f 1 | sort -u ; \rm $tmp
    89 # TODO: versions
   102 # TODO: versions
    90 set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libglib2.0-0, liblua5.1-0, libloudmouth1-0")
   103 set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libglib2.0-0, ${LUA_DEB_DEP}, libloudmouth1-0")
    91 find_program(DPKG_EXECUTABLE dpkg)
   104 find_program(DPKG_EXECUTABLE dpkg)
    92 if(DPKG_EXECUTABLE)
   105 if(DPKG_EXECUTABLE)
    93 	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)
    94 else()
   107 else()
    95 	set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386 CACHE STRING "Architecture of package")
   108 	set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386 CACHE STRING "Architecture of package")
    98 # XXX: Set package name directly to get rid of -Sources?
   111 # XXX: Set package name directly to get rid of -Sources?
    99 set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*;\\\\.swp;~$;/build/;\\\\.tar\\\\.;\\\\.deb;\\\\.so")
   112 set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*;\\\\.swp;~$;/build/;\\\\.tar\\\\.;\\\\.deb;\\\\.so")
   100 include(CPack)
   113 include(CPack)
   101 
   114 
   102 ## Set up installer
   115 ## Set up installer
   103 install(TARGETS loudmouth DESTINATION lib/lua/5.1)
   116 install(TARGETS loudmouth DESTINATION lib/lua/${LUA_VERSION})
   104 install(FILES lm.lua DESTINATION share/lua/5.1)
   117 install(FILES lm.lua DESTINATION share/lua/${LUA_VERSION})
   105 install(FILES test.lua DESTINATION share/doc/${CPACK_PACKAGE_NAME}/examples)
   118 install(FILES test.lua DESTINATION share/doc/${CPACK_PACKAGE_NAME}/examples)
   106 if(DOCGEN_EXECUTABLE)
   119 if(DOCGEN_EXECUTABLE)
   107 	install(FILES ${lua-lm_BINARY_DIR}/loudmouth.html DESTINATION share/doc/${CPACK_PACKAGE_NAME})
   120 	install(FILES ${lua-lm_BINARY_DIR}/loudmouth.html DESTINATION share/doc/${CPACK_PACKAGE_NAME})
   108 endif()
   121 endif()
   109 install(FILES docs/readme.mdwn docs/todo.mdwn COPYING DESTINATION share/doc/${CPACK_PACKAGE_NAME})
   122 install(FILES docs/readme.mdwn docs/todo.mdwn COPYING DESTINATION share/doc/${CPACK_PACKAGE_NAME})