CMakeLists.txt 5.4 KB
Newer Older
H
Hui Zhang 已提交
1 2
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)

3
project(paddlespeech VERSION 0.1)
H
Hui Zhang 已提交
4

H
Hui Zhang 已提交
5 6
set(CMAKE_PROJECT_INCLUDE_BEFORE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/EnableCMP0048.cmake")

H
Hui Zhang 已提交
7
set(CMAKE_VERBOSE_MAKEFILE on)
H
Hui Zhang 已提交
8

H
Hui Zhang 已提交
9 10 11
# set std-14
set(CMAKE_CXX_STANDARD 14)

H
Hui Zhang 已提交
12 13 14 15 16 17
# cmake dir
set(speechx_cmake_dir ${PROJECT_SOURCE_DIR}/cmake)

# Modules
list(APPEND CMAKE_MODULE_PATH ${speechx_cmake_dir}/external)
list(APPEND CMAKE_MODULE_PATH ${speechx_cmake_dir})
H
Hui Zhang 已提交
18 19
include(FetchContent)
include(ExternalProject)
H
Hui Zhang 已提交
20

H
Hui Zhang 已提交
21 22 23 24 25
# fc_patch dir
set(FETCHCONTENT_QUIET off)
get_filename_component(fc_patch "fc_patch" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}")
set(FETCHCONTENT_BASE_DIR ${fc_patch})

H
Hui Zhang 已提交
26
# compiler option
H
Hui Zhang 已提交
27
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++14 -pthread -fPIC -O0 -Wall -g")
H
Hui Zhang 已提交
28

H
Hui Zhang 已提交
29 30 31
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} --std=c++14 -pthread -fPIC -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} --std=c++14 -pthread -fPIC -O3 -Wall")

H
Hui Zhang 已提交
32 33 34 35 36 37 38 39 40 41
###############################################################################
# Option Configurations
###############################################################################
# option configurations 
option(TEST_DEBUG "option for debug" OFF)


###############################################################################
# Include third party
###############################################################################
H
Hui Zhang 已提交
42 43
# example for include third party
# FetchContent_MakeAvailable was not added until CMake 3.14
H
Hui Zhang 已提交
44 45 46
# FetchContent_MakeAvailable()
# include_directories()

H
Hui Zhang 已提交
47 48 49 50 51 52 53 54 55 56
# gflags
include(gflags)

# glog
include(glog)

# gtest
include(gtest)

# ABSEIL-CPP
H
Hui Zhang 已提交
57
include(absl)
S
SmileGoat 已提交
58

H
Hui Zhang 已提交
59 60
# libsndfile
include(libsndfile)
H
Hui Zhang 已提交
61 62

# boost
S
SmileGoat 已提交
63 64
set(boost_SOURCE_DIR ${fc_patch}/boost-src)
set(BOOST_ROOT ${boost_SOURCE_DIR})
H
Hui Zhang 已提交
65 66 67 68 69 70 71 72 73 74
#find_package(boost REQUIRED PATHS ${BOOST_ROOT})

# Eigen
include(eigen)
find_package(Eigen3 REQUIRED)

# Kenlm
include(kenlm)
add_dependencies(kenlm eigen boost)

H
Hui Zhang 已提交
75

76 77 78 79 80 81 82
# openfst
set(openfst_SOURCE_DIR ${fc_patch}/openfst-src)
set(openfst_BINARY_DIR ${fc_patch}/openfst-build)
set(openfst_PREFIX_DIR ${fc_patch}/openfst-subbuild/openfst-populate-prefix)
ExternalProject_Add(openfst
  URL               https://github.com/mjansche/openfst/archive/refs/tags/1.7.2.zip
  URL_HASH          SHA256=ffc56931025579a8af3515741c0f3b0fc3a854c023421472c07ca0c6389c75e6
S
SmileGoat 已提交
83
  #PREFIX            ${openfst_PREFIX_DIR} 
84 85 86 87 88 89
  SOURCE_DIR        ${openfst_SOURCE_DIR}
  BINARY_DIR        ${openfst_BINARY_DIR}
  CONFIGURE_COMMAND ${openfst_SOURCE_DIR}/configure --prefix=${openfst_PREFIX_DIR}
                      "CPPFLAGS=-I${gflags_BINARY_DIR}/include -I${glog_SOURCE_DIR}/src -I${glog_BINARY_DIR}"
                      "LDFLAGS=-L${gflags_BINARY_DIR} -L${glog_BINARY_DIR}"
                      "LIBS=-lgflags_nothreads -lglog -lpthread"
S
SmileGoat 已提交
90
  COMMAND           ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/patch/openfst ${openfst_SOURCE_DIR}
91 92 93 94 95 96
  BUILD_COMMAND     make -j 4
)
add_dependencies(openfst gflags glog)
link_directories(${openfst_PREFIX_DIR}/lib)
include_directories(${openfst_PREFIX_DIR}/include)

S
SmileGoat 已提交
97 98 99 100 101 102 103 104 105 106 107 108 109 110
# paddle lib
set(paddle_SOURCE_DIR ${fc_patch}/paddle-lib)
set(paddle_PREFIX_DIR ${fc_patch}/paddle-lib-prefix)
ExternalProject_Add(paddle
  URL      https://paddle-inference-lib.bj.bcebos.com/2.2.2/cxx_c/Linux/CPU/gcc8.2_avx_mkl/paddle_inference.tgz
  URL_HASH SHA256=7c6399e778c6554a929b5a39ba2175e702e115145e8fa690d2af974101d98873
  PREFIX            ${paddle_PREFIX_DIR} 
  SOURCE_DIR        ${paddle_SOURCE_DIR}
  CONFIGURE_COMMAND ""
  BUILD_COMMAND     ""
  INSTALL_COMMAND   ""
)

set(PADDLE_LIB ${fc_patch}/paddle-lib)
S
SmileGoat 已提交
111 112 113 114 115 116 117 118 119 120
include_directories("${PADDLE_LIB}/paddle/include")
set(PADDLE_LIB_THIRD_PARTY_PATH "${PADDLE_LIB}/third_party/install/")
include_directories("${PADDLE_LIB_THIRD_PARTY_PATH}protobuf/include")
include_directories("${PADDLE_LIB_THIRD_PARTY_PATH}xxhash/include")
include_directories("${PADDLE_LIB_THIRD_PARTY_PATH}cryptopp/include")

link_directories("${PADDLE_LIB_THIRD_PARTY_PATH}protobuf/lib")
link_directories("${PADDLE_LIB_THIRD_PARTY_PATH}xxhash/lib")
link_directories("${PADDLE_LIB_THIRD_PARTY_PATH}cryptopp/lib")
link_directories("${PADDLE_LIB}/paddle/lib")
S
SmileGoat 已提交
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
link_directories("${PADDLE_LIB_THIRD_PARTY_PATH}mklml/lib")

##paddle with mkl
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
set(MATH_LIB_PATH "${PADDLE_LIB_THIRD_PARTY_PATH}mklml")
include_directories("${MATH_LIB_PATH}/include")
set(MATH_LIB ${MATH_LIB_PATH}/lib/libmklml_intel${CMAKE_SHARED_LIBRARY_SUFFIX}
                 ${MATH_LIB_PATH}/lib/libiomp5${CMAKE_SHARED_LIBRARY_SUFFIX})
set(MKLDNN_PATH "${PADDLE_LIB_THIRD_PARTY_PATH}mkldnn")
include_directories("${MKLDNN_PATH}/include")
set(MKLDNN_LIB ${MKLDNN_PATH}/lib/libmkldnn.so.0)
set(EXTERNAL_LIB "-lrt -ldl -lpthread")
set(DEPS ${PADDLE_LIB}/paddle/lib/libpaddle_inference${CMAKE_SHARED_LIBRARY_SUFFIX})
set(DEPS ${DEPS}
      ${MATH_LIB} ${MKLDNN_LIB}
      glog gflags protobuf xxhash cryptopp
      ${EXTERNAL_LIB})
S
SmileGoat 已提交
138

Z
zhouyang 已提交
139
#openblas
H
Hui Zhang 已提交
140 141 142 143
include(openblas)

# openblas need, gfortan dir in the docker.
#link_directories(/usr/local/gcc-8.2/lib64)
S
SmileGoat 已提交
144

H
Hui Zhang 已提交
145 146 147 148
###############################################################################
# Add local library
###############################################################################
# system lib 
Z
zhouyang 已提交
149
#find_package()
H
Hui Zhang 已提交
150
# if dir have CmakeLists.txt 
Z
zhouyang 已提交
151
#add_subdirectory(speechx)
H
Hui Zhang 已提交
152
# if dir do not have CmakeLists.txt 
Z
zhouyang 已提交
153 154
#add_library(lib_name STATIC file.cc)
#target_link_libraries(lib_name item0 item1)
S
SmileGoat 已提交
155
#add_dependencies(lib_name depend-target)
H
Hui Zhang 已提交
156 157

add_subdirectory(speechx)