Welcome to mirror list, hosted at ThFree Co, Russian Federation.

CMakeLists.txt - github.com/marian-nmt/marian.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ffc80e5c873d60ea5f1a7957c32c66d876f1d4de (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
123
124
125
126
127
128
129
130
131
132
133
134
135
cmake_minimum_required(VERSION 3.5.1)

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

project(amunmt C CXX)

set(CMAKE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})

set(CMAKE_CXX_FLAGS_RELEASE "-std=c++14 -fPIC -O3 -Ofast -m64 -march=native -funroll-loops -ffinite-math-only -Wno-unused-result -Wno-deprecated -pthread -DNDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-std=c++14 -fPIC -g -O0 -m64  -march=native -funroll-loops -ffinite-math-only -Wno-unused-result -Wno-deprecated -pthread")
set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} -g -pg")
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_RELEASE})

if(BUILD_STATIC)
  set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
  set(CMAKE_EXE_LINKER_FLAGS "-static")
  set(Boost_USE_STATIC_LIBS  "TRUE")
endif(BUILD_STATIC)

include_directories(${amunmt_SOURCE_DIR})

option(CPU "Select to compile with CPU support" ON)
option(CUDA "Select to compile CUDA support by default if available" ON)
option(FPGA "Select to compile with FPGA support" OFF)
option(MARIAN "Select to compile with Marian library" OFF)
option(MARIAN_LIBRARY_ONLY "Automatically set when building amunmt. Don't touch this." OFF)

if(CPU)
    add_definitions(-DHAS_CPU)
endif(CPU)

if(FPGA)
    add_definitions(-DHAS_FPGA)
endif(FPGA)
  
if(CUDA)
  find_package(CUDA)
  if(CUDA_FOUND)
    LIST(APPEND CUDA_NVCC_FLAGS --default-stream per-thread; -std=c++11; -O3; -arch=sm_30; -gencode=arch=compute_30,code=sm_30; -gencode=arch=compute_50,code=sm_50; -gencode=arch=compute_52,code=sm_52; -gencode=arch=compute_60,code=sm_60; -gencode=arch=compute_61,code=sm_61; -gencode=arch=compute_61,code=compute_61 ; -lineinfo; --use_fast_math; -DNDEBUG;)
    # add_definitions(-DCUDA_API_PER_THREAD_DEFAULT_STREAM)
    add_definitions(-DCUDA)
    SET(CUDA_PROPAGATE_HOST_FLAGS OFF)
    message("-- Compiling with CUDA support")
    
    if (MARIAN)
      execute_process(COMMAND git submodule update --init --recursive --remote --no-fetch
                      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
    endif(MARIAN)

  else(CUDA_FOUND)
    add_definitions(-DNO_CUDA)
    message("-- Cannot find CUDA libraries. Compiling without them." )
  endif(CUDA_FOUND)
else(CUDA)
    message("-- Forcing compilation without CUDA.")
    add_definitions(-DNO_CUDA)
endif(CUDA)

if(PYTHON_VERSION)
  STRING(REPLACE "." "" PYTHON_VERSION_NORMALIZED ${PYTHON_VERSION})
else(PYTHON_VERSION)
  set(PYTHON_VERSION "2.7")
endif(PYTHON_VERSION)

if (UNIX AND NOT APPLE)

    if(PYTHON_VERSION_NORMALIZED)
      set(BOOST_PYTHON_VERSION_NAME "python-py${PYTHON_VERSION_NORMALIZED}")
    else(PYTHON_VERSION_NORMALIZED)
      set(BOOST_PYTHON_VERSION_NAME "python")
    endif(PYTHON_VERSION_NORMALIZED)

    find_package(Boost COMPONENTS system filesystem program_options timer iostreams ${BOOST_PYTHON_VERSION_NAME} thread chrono)
elseif (APPLE)

    # On macOS, boost-python component is named python if compiled against python2.7 or
    # python3 if compiled against python3.x
    if(NOT PYTHON_VERSION_NORMALIZED EQUAL 27)
      set(BOOST_PYTHON_VERSION_NAME "python${PYTHON_VERSION_NORMALIZED}")
    else(NOT PYTHON_VERSION_NORMALIZED EQUAL 27)
      set(BOOST_PYTHON_VERSION_NAME "python")
    endif(NOT PYTHON_VERSION_NORMALIZED EQUAL 27)

    find_package(Boost COMPONENTS system filesystem program_options timer iostreams ${BOOST_PYTHON_VERSION_NAME} thread chrono)
endif (UNIX AND NOT APPLE)

if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
    set(EXT_LIBS ${EXT_LIBS} ${Boost_LIBRARIES})
else(Boost_FOUND)
    message(SEND_ERROR "Cannot find Boost libraries. Terminating." )
endif(Boost_FOUND)

if (FPGA)
  find_package( OpenCL REQUIRED )
  if(OpenCL_FOUND)
    set(EXT_LIBS ${EXT_LIBS} ${OpenCL_LIBRARIES})
  endif(OpenCL_FOUND)
endif(FPGA)

find_package(PythonLibs ${PYTHON_VERSION} REQUIRED)
if(PYTHONLIBS_FOUND)
  message("-- Found Python" )
  include_directories(${PYTHON_INCLUDE_DIRS})
  set(EXT_LIBS ${EXT_LIBS} ${PYTHON_LIBRARIES})
else(PYTHONLIBS_FOUND)
  message("-- Cannot find python libraries. Building without bindings." )
endif(PYTHONLIBS_FOUND)

find_package (ZLIB)
if (ZLIB_FOUND)
  include_directories(${ZLIB_INCLUDE_DIRS})
  set(EXT_LIBS ${EXT_LIBS} ${ZLIB_LIBRARIES})
endif (ZLIB_FOUND)

IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
  FIND_PACKAGE(Git)
  IF(GIT_FOUND)
    EXECUTE_PROCESS(
      COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
      WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
      OUTPUT_VARIABLE "AMUNMT_BUILD_VERSION"
      ERROR_QUIET
      OUTPUT_STRIP_TRAILING_WHITESPACE)
    MESSAGE( STATUS "Git version: ${AMUNMT_BUILD_VERSION}" )
  ELSE(GIT_FOUND)
    SET(AMUNMT_BUILD_VERSION 0)
  ENDIF(GIT_FOUND)
ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
SET(GIT_SHA1 ${AMUNMT_BUILD_VERSION})

include_directories(${amunmt_SOURCE_DIR}/src)
add_subdirectory(src)