blob: 7a8e7a48735fa86f4e34becd8fe73766b8711499 [file] [log] [blame]
cmake_minimum_required(VERSION 2.8)
project(protobuf-c)
set(PROTOBUF_C_VERSION_MAJOR 0)
set(PROTOBUF_C_VERSION_MINOR 14)
set(PROTOBUF_C_VERSION_PATCH 1)
set(PROTOBUF_C_VERSION ${PROTOBUF_C_VERSION_MAJOR}.${PROTOBUF_C_VERSION_MINOR})
set(CMAKE_ROOT_OUTPUT_DIRECTORY
${CMAKE_BINARY_DIR}/${PROJECT_NAME}-${CMAKE_SYSTEM}
CACHE PATH "root output directory in which to locate target files")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_ROOT_OUTPUT_DIRECTORY}/bin
CACHE PATH "output directory in which to build runtime target files")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_ROOT_OUTPUT_DIRECTORY}/lib
CACHE PATH "output directory in which to build library target files")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ROOT_OUTPUT_DIRECTORY}/lib
CACHE PATH "output directory in which to build archive target files")
function(process_libprotobuf_c_pc)
set(prefix ${PROTOBUF_C_INSTALL_PREFIX})
set(exec_prefix ${PROTOBUF_C_INSTALL_EXEC_PREFIX})
set(libdir ${PROTOBUF_C_INSTALL_LIBDIR})
set(includedir ${PROTOBUF_C_INSTALL_INCLUDEDIR})
set(VERSION ${PROTOBUF_C_VERSION})
configure_file(libprotobuf-c.pc.in
${CMAKE_ROOT_OUTPUT_DIRECTORY}/pkgconfig/libprotobuf-c.pc @ONLY)
install(DIRECTORY ${CMAKE_ROOT_OUTPUT_DIRECTORY}/pkgconfig DESTINATION
${PROTOBUF_C_INSTALL_LIBDIR})
endfunction()
set(PROTOBUF_C_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}
CACHE PATH "install location for architecture-independent files")
set(PROTOBUF_C_INSTALL_EXEC_PREFIX ${CMAKE_INSTALL_PREFIX}
CACHE PATH "install location for architecture-dependent files")
if ( UNIX )
set(PROTOBUF_C_INSTALL_BINDIR ${PROTOBUF_C_INSTALL_EXEC_PREFIX}/bin
CACHE PATH "install location for executable files")
set(PROTOBUF_C_INSTALL_LIBDIR ${PROTOBUF_C_INSTALL_EXEC_PREFIX}/lib
CACHE PATH "install location for object code libraries")
set(PROTOBUF_C_INSTALL_INCLUDEDIR ${PROTOBUF_C_INSTALL_PREFIX}/include
CACHE PATH "install location for public header files")
process_libprotobuf_c_pc()
else()
set(PROTOBUF_C_INSTALL_BINDIR bin
CACHE PATH "install location for executable files")
set(PROTOBUF_C_INSTALL_LIBDIR lib
CACHE PATH "install location for object code libraries")
set(PROTOBUF_C_INSTALL_INCLUDEDIR include
CACHE PATH "install location for public header files")
endif()
enable_testing()
add_subdirectory(src)
# Use "make package" or something like that to create a protobuf-c package.
set(CPACK_PACKAGE_CONTACT "David Benson <daveb@ffem.org>")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "C bindings for protocol-buffers")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
set(CPACK_PACKAGE_VERSION_MAJOR "${PROTOBUF_C_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${PROTOBUF_C_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${PROTOBUF_C_VERSION_PATCH}")
if ( WIN32 )
set(CPACK_GENERATOR ZIP)
else()
# Look at http://public.kitware.com/Bug/view.php?id=7000
set(CPACK_SET_DESTDIR "ON")
set(CPACK_GENERATOR DEB)
set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
set(CPACK_DEBIAN_PACKAGE_PRIORITY "low")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://code.google.com/p/protobuf-c")
endif()
include(CPack)