From 52a8461fb32f003424262e05ef95b3a98cfc795f Mon Sep 17 00:00:00 2001 From: Marcin Junczys-Dowmunt Date: Mon, 12 Aug 2019 13:12:14 -0700 Subject: [PATCH] Fix CMakeLists.txt and src/3rd_party/CMakeLists.txt, bug with overlapping CXX flags --- CMakeLists.txt | 16 ++++++++++------ src/3rd_party/CMakeLists.txt | 14 ++++++++++++-- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2995cb93..c988042f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -103,12 +103,12 @@ list(APPEND ALL_WARNINGS -Wall; -Werror; -Wno-unused-result; -Wno-deprecated; -W list(APPEND ALL_WARNINGS -Wsuggest-override) endif() - set(CMAKE_CXX_FLAGS "-std=c++11 -O3 -Ofast -m64 -pthread -march=${BUILD_ARCH} ${INTRINSICS} -Wl,--no-as-needed -funroll-loops -ffinite-math-only -fPIC ${DISABLE_GLOBALLY}") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -g -rdynamic") - set(CMAKE_CXX_FLAGS_DEBUG "-std=c++11 -g -rdynamic -O0 -pthread -Wl,--no-as-needed -fPIC -Wno-unused-result -Wno-deprecated -Wno-pragmas") - set(CMAKE_CXX_FLAGS_SLIM "${CMAKE_CXX_FLAGS} -DNDEBUG") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} -g -rdynamic") - set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} -pg -g -rdynamic") + set(CMAKE_CXX_FLAGS "-std=c++11 -g -pthread -Wl,--no-as-needed -fPIC ${DISABLE_GLOBALLY}") + set(CMAKE_CXX_FLAGS_RELEASE "-g -rdynamic -Ofast -m64 -march=${BUILD_ARCH} ${INTRINSICS} -funroll-loops -ffinite-math-only") + set(CMAKE_CXX_FLAGS_DEBUG "-g -rdynamic -O0") + set(CMAKE_CXX_FLAGS_SLIM "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE}") + set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} -pg") set(CMAKE_CXX_FLAGS_PROFGEN "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-generate -fprofile-correction") set(CMAKE_CXX_FLAGS_PROFUSE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-use -fprofile-correction") endif() @@ -121,6 +121,10 @@ if(USE_SENTENCEPIECE) set(EXT_LIBS ${EXT_LIBS} sentencepiece sentencepiece_train) endif() +if(NOT CMAKE_BUILD_TYPE) + message(WARNING "CMAKE_BUILD_TYPE not set; setting to Release") + set(CMAKE_BUILD_TYPE "Release") +endif() # Find packages set(EXT_LIBS ${EXT_LIBS} ${CMAKE_DL_LIBS}) diff --git a/src/3rd_party/CMakeLists.txt b/src/3rd_party/CMakeLists.txt index 87f79a43..17101c0b 100644 --- a/src/3rd_party/CMakeLists.txt +++ b/src/3rd_party/CMakeLists.txt @@ -16,9 +16,19 @@ if(USE_SENTENCEPIECE) endif() endif() - set(SPM_ENABLE_SHARED OFF CACHE BOOL "Builds shared libaries in addition to static libraries." FORCE) set(SPM_ENABLE_TCMALLOC ON CACHE BOOL "Enable TCMalloc if available." FORCE) - set(SPM_TCMALLOC_STATIC ON CACHE BOOL "Link static library of TCMALLOC." FORCE) + + if(USE_STATIC_LIBS) + message(WARNING "You are compiling SentencePiece binaries with -DUSE_STATIC_LIBS=on. \ + This will cause spm_train to segfault. No need to worry if you do not intend to use that binary. \ + Marian support for SentencePiece will work fine.") + + set(SPM_ENABLE_SHARED OFF CACHE BOOL "Builds shared libaries in addition to static libraries." FORCE) + set(SPM_TCMALLOC_STATIC ON CACHE BOOL "Link static library of TCMALLOC." FORCE) + else(USE_STATIC_LIBS) + set(SPM_ENABLE_SHARED ON CACHE BOOL "Builds shared libaries in addition to static libraries." FORCE) + set(SPM_TCMALLOC_STATIC OFF CACHE BOOL "Link static library of TCMALLOC." FORCE) + endif(USE_STATIC_LIBS) add_subdirectory(./sentencepiece) include_directories(./sentencepiece)