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}) |