/src/CMakeLists.txt
http://protobuf-c.googlecode.com/ · CMake · 118 lines · 107 code · 11 blank · 0 comment · 9 complexity · 52681e7e15037a6d7f1ac977261109ca MD5 · raw file
- set(BUILD_PROTOBUF_C_COMPILER ON
- CACHE BOOL "build protobuf-c compiler (aka protoc-c)")
- if ( BUILD_PROTOBUF_C_COMPILER )
- find_package(Protobuf REQUIRED)
- include_directories(${PROTOBUF_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR})
- set(PROTOC_C_SOURCES
- google/protobuf/compiler/c/c_service.cc
- google/protobuf/compiler/c/c_helpers.cc
- google/protobuf/compiler/c/c_enum.cc
- google/protobuf/compiler/c/c_enum_field.cc
- google/protobuf/compiler/c/c_string_field.cc
- google/protobuf/compiler/c/c_primitive_field.cc
- google/protobuf/compiler/c/c_extension.cc
- google/protobuf/compiler/c/c_file.cc
- google/protobuf/compiler/c/c_field.cc
- google/protobuf/compiler/c/c_message.cc
- google/protobuf/compiler/c/c_generator.cc
- google/protobuf/compiler/c/c_message_field.cc
- google/protobuf/compiler/c/main.cc
- google/protobuf/compiler/c/c_bytes_field.cc)
- add_executable(protoc-c ${PROTOC_C_SOURCES})
- target_link_libraries(protoc-c ${PROTOBUF_LIBRARY}
- ${PROTOBUF_PROTOC_LIBRARY})
- if ( UNIX )
- find_package(Threads REQUIRED)
- target_link_libraries(protoc-c ${CMAKE_THREAD_LIBS_INIT})
- endif()
- install(TARGETS protoc-c DESTINATION ${PROTOBUF_C_INSTALL_BINDIR})
- endif()
- include(CheckIncludeFiles)
- check_include_files("alloca.h" HAVE_ALLOCA_H)
- check_include_files("malloc.h" HAVE_MALLOC_H)
- check_include_files("sys/poll.h" HAVE_SYS_POLL_H)
- check_include_files("sys/select.h" HAVE_SYS_SELECT_H)
- check_include_files("inttypes.h" HAVE_INTTYPES_H)
- check_include_files("sys/uio.h" HAVE_SYS_UIO_H)
- check_include_files("unistd.h" HAVE_UNISTD_H)
- check_include_files("io.h" HAVE_IO_H)
- include(TestBigEndian)
- test_big_endian(IS_BIG_ENDIAN)
- if ( NOT IS_BIG_ENDIAN )
- set(IS_LITTLE_ENDIAN 1)
- endif()
- add_definitions(-DHAVE_PROTOBUF_C_CONFIG_H=1)
- configure_file(google/protobuf-c/protobuf-c-config.h.in
- google/protobuf-c/protobuf-c-config.h)
- include_directories(${CMAKE_CURRENT_BINARY_DIR}/google/protobuf-c)
- set(BUILD_PROTOBUF_C_STATIC_LIB ON
- CACHE BOOL "build static protobuf-c library")
- set(BUILD_PROTOBUF_C_SHARED_LIB ON
- CACHE BOOL "build shared protobuf-c library")
- if ( WIN32 )
- set(PROTOBUF_C_SOURCES
- google/protobuf-c/protobuf-c-data-buffer.c
- google/protobuf-c/protobuf-c.c)
- else()
- set(PROTOBUF_C_SOURCES
- google/protobuf-c/protobuf-c-dispatch.c
- google/protobuf-c/protobuf-c-data-buffer.c
- google/protobuf-c/protobuf-c-rpc.c
- google/protobuf-c/protobuf-c.c)
- endif()
- if ( BUILD_PROTOBUF_C_STATIC_LIB )
- add_library(protobuf-c-static STATIC ${PROTOBUF_C_SOURCES})
- install(TARGETS protobuf-c-static
- ARCHIVE DESTINATION ${PROTOBUF_C_INSTALL_LIBDIR})
- set_target_properties(protobuf-c-static PROPERTIES OUTPUT_NAME protobuf-c)
- get_target_property(DIRECTORY protobuf-c-static ARCHIVE_OUTPUT_DIRECTORY)
- set_target_properties(protobuf-c-static PROPERTIES ARCHIVE_OUTPUT_DIRECTORY
- ${DIRECTORY}/static)
- endif()
- if ( BUILD_PROTOBUF_C_SHARED_LIB )
- add_library(protobuf-c-shared SHARED ${PROTOBUF_C_SOURCES})
- install(TARGETS protobuf-c-shared
- RUNTIME DESTINATION ${PROTOBUF_C_INSTALL_BINDIR}
- LIBRARY DESTINATION ${PROTOBUF_C_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${PROTOBUF_C_INSTALL_LIBDIR}/dllimport)
- set_target_properties(protobuf-c-shared PROPERTIES OUTPUT_NAME protobuf-c)
- set_target_properties(protobuf-c-shared PROPERTIES VERSION
- ${PROTOBUF_C_VERSION})
- get_target_property(DIRECTORY protobuf-c-shared ARCHIVE_OUTPUT_DIRECTORY)
- set_target_properties(protobuf-c-shared PROPERTIES ARCHIVE_OUTPUT_DIRECTORY
- ${DIRECTORY}/shared)
- get_target_property(DIRECTORY protobuf-c-shared LIBRARY_OUTPUT_DIRECTORY)
- set_target_properties(protobuf-c-shared PROPERTIES LIBRARY_OUTPUT_DIRECTORY
- ${DIRECTORY}/shared)
- if ( WIN32 )
- set_target_properties(protobuf-c-shared PROPERTIES COMPILE_DEFINITIONS
- "PROTOBUF_C_USE_SHARED_LIB;PROTOBUF_C_EXPORT")
- endif()
- endif()
- if ( BUILD_PROTOBUF_C_STATIC_LIB OR BUILD_PROTOBUF_C_SHARED_LIB )
- if ( WIN32 )
- set(PROTOBUF_C_PUBLIC_HEADERS
- google/protobuf-c/protobuf-c.h
- google/protobuf-c/protobuf-c-private.h)
- else()
- set(PROTOBUF_C_PUBLIC_HEADERS
- google/protobuf-c/protobuf-c.h
- google/protobuf-c/protobuf-c-private.h
- google/protobuf-c/protobuf-c-dispatch.h
- google/protobuf-c/protobuf-c-rpc.h)
- endif()
- install(FILES ${PROTOBUF_C_PUBLIC_HEADERS} DESTINATION
- ${PROTOBUF_C_INSTALL_INCLUDEDIR})
- endif()
- add_subdirectory(test)