lahiker42 | 6b8d74e | 2011-03-10 19:12:35 +0000 | [diff] [blame] | 1 | cmake_minimum_required(VERSION 2.8) |
| 2 | project(protobuf-c) |
| 3 | set(PROTOBUF_C_VERSION_MAJOR 0) |
| 4 | set(PROTOBUF_C_VERSION_MINOR 14) |
| 5 | set(PROTOBUF_C_VERSION_PATCH 1) |
| 6 | set(PROTOBUF_C_VERSION ${PROTOBUF_C_VERSION_MAJOR}.${PROTOBUF_C_VERSION_MINOR}) |
| 7 | |
| 8 | set(CMAKE_ROOT_OUTPUT_DIRECTORY |
| 9 | ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-${CMAKE_SYSTEM} |
| 10 | CACHE PATH "root output directory in which to locate target files") |
| 11 | |
| 12 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_ROOT_OUTPUT_DIRECTORY}/bin |
| 13 | CACHE PATH "output directory in which to build runtime target files") |
| 14 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_ROOT_OUTPUT_DIRECTORY}/lib |
| 15 | CACHE PATH "output directory in which to build library target files") |
| 16 | set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ROOT_OUTPUT_DIRECTORY}/lib |
| 17 | CACHE PATH "output directory in which to build archive target files") |
| 18 | |
| 19 | function(process_libprotobuf_c_pc) |
| 20 | set(prefix ${PROTOBUF_C_INSTALL_PREFIX}) |
| 21 | set(exec_prefix ${PROTOBUF_C_INSTALL_EXEC_PREFIX}) |
| 22 | set(libdir ${PROTOBUF_C_INSTALL_LIBDIR}) |
| 23 | set(includedir ${PROTOBUF_C_INSTALL_INCLUDEDIR}) |
| 24 | set(VERSION ${PROTOBUF_C_VERSION}) |
| 25 | configure_file(libprotobuf-c.pc.in |
| 26 | ${CMAKE_ROOT_OUTPUT_DIRECTORY}/pkgconfig/libprotobuf-c.pc @ONLY) |
| 27 | install(DIRECTORY ${CMAKE_ROOT_OUTPUT_DIRECTORY}/pkgconfig DESTINATION |
| 28 | ${PROTOBUF_C_INSTALL_LIBDIR}) |
| 29 | endfunction() |
| 30 | |
| 31 | set(PROTOBUF_C_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} |
| 32 | CACHE PATH "install location for architecture-independent files") |
| 33 | set(PROTOBUF_C_INSTALL_EXEC_PREFIX ${CMAKE_INSTALL_PREFIX} |
| 34 | CACHE PATH "install location for architecture-dependent files") |
| 35 | if ( UNIX ) |
| 36 | set(PROTOBUF_C_INSTALL_BINDIR ${PROTOBUF_C_INSTALL_EXEC_PREFIX}/bin |
| 37 | CACHE PATH "install location for executable files") |
| 38 | set(PROTOBUF_C_INSTALL_LIBDIR ${PROTOBUF_C_INSTALL_EXEC_PREFIX}/lib |
| 39 | CACHE PATH "install location for object code libraries") |
| 40 | set(PROTOBUF_C_INSTALL_INCLUDEDIR ${PROTOBUF_C_INSTALL_PREFIX}/include |
| 41 | CACHE PATH "install location for public header files") |
| 42 | process_libprotobuf_c_pc() |
| 43 | else() |
| 44 | set(PROTOBUF_C_INSTALL_BINDIR bin |
| 45 | CACHE PATH "install location for executable files") |
| 46 | set(PROTOBUF_C_INSTALL_LIBDIR lib |
| 47 | CACHE PATH "install location for object code libraries") |
| 48 | set(PROTOBUF_C_INSTALL_INCLUDEDIR include |
| 49 | CACHE PATH "install location for public header files") |
| 50 | endif() |
| 51 | |
| 52 | enable_testing() |
| 53 | add_subdirectory(src) |
| 54 | |
| 55 | # Use "make package" or something like that to create a protobuf-c package. |
| 56 | set(CPACK_PACKAGE_CONTACT "David Benson <daveb@ffem.org>") |
| 57 | set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "C bindings for protocol-buffers") |
| 58 | set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") |
| 59 | set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") |
| 60 | set(CPACK_PACKAGE_VERSION_MAJOR "${PROTOBUF_C_VERSION_MAJOR}") |
| 61 | set(CPACK_PACKAGE_VERSION_MINOR "${PROTOBUF_C_VERSION_MINOR}") |
| 62 | set(CPACK_PACKAGE_VERSION_PATCH "${PROTOBUF_C_VERSION_PATCH}") |
| 63 | |
| 64 | if ( WIN32 ) |
| 65 | set(CPACK_GENERATOR ZIP) |
| 66 | else() |
| 67 | # Look at http://public.kitware.com/Bug/view.php?id=7000 |
| 68 | set(CPACK_SET_DESTDIR "ON") |
| 69 | |
| 70 | set(CPACK_GENERATOR DEB) |
| 71 | set(CPACK_DEBIAN_PACKAGE_SECTION "libs") |
| 72 | set(CPACK_DEBIAN_PACKAGE_PRIORITY "low") |
| 73 | set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://code.google.com/p/protobuf-c") |
| 74 | endif() |
| 75 | include(CPack) |
| 76 | |