aboutsummaryrefslogtreecommitdiff
path: root/dep/protobuf/CMakeLists.txt
blob: cce1181568ac8303f1c6d1ad8e39c7f90dbfa98f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

set(protobuf_STAT_SRCS
  src/google/protobuf/compiler/importer.cc
  src/google/protobuf/compiler/parser.cc
  src/google/protobuf/descriptor.cc
  src/google/protobuf/descriptor.pb.cc
  src/google/protobuf/descriptor_database.cc
  src/google/protobuf/dynamic_message.cc
  src/google/protobuf/extension_set.cc
  src/google/protobuf/extension_set_heavy.cc
  src/google/protobuf/generated_message_reflection.cc
  src/google/protobuf/generated_message_util.cc
  src/google/protobuf/io/coded_stream.cc
  src/google/protobuf/io/gzip_stream.cc
  src/google/protobuf/io/printer.cc
  src/google/protobuf/io/strtod.cc
  src/google/protobuf/io/tokenizer.cc
  src/google/protobuf/io/zero_copy_stream.cc
  src/google/protobuf/io/zero_copy_stream_impl.cc
  src/google/protobuf/io/zero_copy_stream_impl_lite.cc
  src/google/protobuf/message.cc
  src/google/protobuf/message_lite.cc
  src/google/protobuf/reflection_ops.cc
  src/google/protobuf/repeated_field.cc
  src/google/protobuf/service.cc
  src/google/protobuf/stubs/common.cc
  src/google/protobuf/stubs/once.cc
  src/google/protobuf/stubs/stringprintf.cc
  src/google/protobuf/stubs/structurally_valid.cc
  src/google/protobuf/stubs/strutil.cc
  src/google/protobuf/stubs/substitute.cc
  src/google/protobuf/text_format.cc
  src/google/protobuf/unknown_field_set.cc
  src/google/protobuf/wire_format.cc
  src/google/protobuf/wire_format_lite.cc
)

if (MSVC)
  set(protobuf_STAT_SRCS
    ${protobuf_STAT_SRCS}
    src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc
  )
else()
  set(protobuf_STAT_SRCS
    ${protobuf_STAT_SRCS}
    src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc
  )
endif()

add_library(protobuf ${protobuf_STAT_SRCS})

target_include_directories(protobuf
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/src
  PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/tc_custom)

target_link_libraries(protobuf
  PRIVATE
    trinity-default-interface
    trinity-no-warning-interface
  PUBLIC
    threads)

if (BUILD_SHARED_LIBS)
  target_compile_definitions(protobuf
    PRIVATE
      LIBPROTOBUF_EXPORTS
      LIBPROTOC_EXPORTS
    PUBLIC
      PROTOBUF_USE_DLLS)
endif()

if (MSVC)
  target_compile_options(protobuf
    PRIVATE
      /wd4996)

  target_compile_definitions(protobuf
    PRIVATE
      _SCL_SECURE_NO_WARNINGS)
endif()

set_target_properties(protobuf
  PROPERTIES
    FOLDER
      "dep")

if (BUILD_SHARED_LIBS)
  if (UNIX)
    install(TARGETS protobuf
      LIBRARY
        DESTINATION lib)
  elseif (WIN32)
    install(TARGETS protobuf
      RUNTIME
        DESTINATION "${CMAKE_INSTALL_PREFIX}")
  endif()
endif()

# Generate precompiled header
if(USE_COREPCH)
  list(APPEND protobuf_PCH_HEADERS
    <google/protobuf/descriptor.pb.h>
    <google/protobuf/io/coded_stream.h>
    <google/protobuf/wire_format.h>
    <google/protobuf/stubs/hash.h>
    <google/protobuf/stubs/strutil.h>
    <algorithm>
    <memory>)

  add_cxx_pch(protobuf "${protobuf_PCH_HEADERS}")
endif()