xref: /aosp_15_r20/external/cronet/third_party/ced/src/CMakeLists.txt (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1# Copyright 2016 Google Inc.  All Rights Reserved.
2# Use of this source code is governed by a BSD-style
3# license that can be found in the LICENSE file.
4
5# Old enough to support Ubuntu Precise.
6cmake_minimum_required(VERSION 2.8.7)
7
8if (WIN32)
9  if (NOT EXISTS "compact_enc_det/compact_enc_det.h")
10    message(FATAL_ERROR "\nCould not find source code.  Make sure you are running this script from the root of the distribution tree.")
11  endif()
12
13  if (NOT EXISTS "gtest")
14    message(STATUS "Google Test not present.  Fetching from the web...")
15    file(DOWNLOAD "https://github.com/google/googletest/archive/master.zip" ${CMAKE_SOURCE_DIR}/master.zip)
16    execute_process(COMMAND ${CMAKE_COMMAND} -E tar x master.zip)
17    file(REMOVE master.zip)
18    file(RENAME googletest-master gtest)
19  endif()
20
21  # Configure gtest.
22  execute_process(COMMAND ${CMAKE_COMMAND} .
23                          WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/gtest)
24endif()
25
26project(CED CXX)
27set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE INTERNAL "No dev warnings")
28
29option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
30
31if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
32  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-narrowing")
33elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
34  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-c++11-narrowing")
35elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
36  if (NOT BUILD_SHARED_LIBS)
37    foreach(flag_var
38            CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
39            CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
40      if(${flag_var} MATCHES "/MD")
41        string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
42      endif(${flag_var} MATCHES "/MD")
43    endforeach(flag_var)
44  endif()
45endif()
46
47set(EXTRA_TARGET_LINK_LIBRARIES)
48
49if(WIN32)
50  add_definitions(-DUNICODE -D_UNICODE -DSTRICT -DNOMINMAX)
51  set(THREADING threadwin)
52else()
53  set(THREADING thread)
54  list(APPEND EXTRA_TARGET_LINK_LIBRARIES -pthread)
55endif()
56
57set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
58set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
59set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
60
61include_directories(${CMAKE_SOURCE_DIR})
62
63set(CED_LIBRARY_SOURCES
64    compact_enc_det/compact_enc_det.cc
65    compact_enc_det/compact_enc_det_hint_code.cc
66    util/encodings/encodings.cc
67    util/languages/languages.cc
68    )
69
70add_library(ced ${CED_LIBRARY_SOURCES})
71
72# Uncomment to put CED into WHATWG-compliant mode.
73#add_definitions(-DHTML5_MODE)
74
75set(GTEST_INCLUDE_DIR "gtest/googletest/include")
76set(GTEST_LIB_DIR "${CMAKE_SOURCE_DIR}/gtest/lib")
77
78set(CED_UNITTEST_SOURCES
79    compact_enc_det/compact_enc_det_unittest.cc
80    compact_enc_det/compact_enc_det_fuzz_test.cc
81    compact_enc_det/detail_head_string.inc
82    util/encodings/encodings_unittest.cc
83    )
84
85add_executable(ced_unittest ${CED_UNITTEST_SOURCES})
86include_directories(${CMAKE_SOURCE_DIR}/${GTEST_INCLUDE_DIR})
87if (WIN32)
88  set(GTEST_LIB_DIR_DBG "${GTEST_LIB_DIR}/Debug")
89  set(GTEST_LIB_DIR_REL "${GTEST_LIB_DIR}/Release")
90  target_link_libraries(ced_unittest
91                        ced
92                        debug ${GTEST_LIB_DIR_DBG}/gtest.lib optimized ${GTEST_LIB_DIR_REL}/gtest.lib
93                        debug ${GTEST_LIB_DIR_DBG}/gtest_main.lib optimized ${GTEST_LIB_DIR_REL}/gtest_main.lib
94                        ${EXTRA_TARGET_LINK_LIBRARIES})
95  message("\nConfiguration completed.  Open the created projects with Visual Studio to build the packages.\n")
96else()
97  target_link_libraries(ced_unittest
98                        ced
99                        ${GTEST_LIB_DIR}/libgtest.a
100                        ${GTEST_LIB_DIR}/libgtest_main.a
101                        ${EXTRA_TARGET_LINK_LIBRARIES}
102                        )
103endif()
104