PROJECT(Lemmatizer2) set(LEM_VERSION_MAJOR 2) set(LEM_VERSION_MINOR 0) set(LEM_VERSION_PATCH 1) CMAKE_MINIMUM_REQUIRED(VERSION 2.4.2 FATAL_ERROR) # ################################################################################ # Check Includes # INCLUDE(CheckIncludeFiles) INCLUDE(CheckCXXSourceCompiles) IF(NOT WIN32) IF(UNIX) CHECK_CXX_SOURCE_COMPILES("#include int main(void) { std::map m; m.insert(std::pair(1, 2)); m[2] = 3; return 0; } " STL_MAP_CHECK) IF(NOT STL_MAP_CHECK) MESSAGE(STATUS "!!!! STL std::map does not work!") ENDIF(NOT STL_MAP_CHECK) CHECK_CXX_SOURCE_COMPILES("#include int main(void) { std::vector v; v.push_back(1); return 0; } " STL_VECTOR_CHECK) IF(NOT STL_VECTOR_CHECK) MESSAGE(STATUS "!!!! STL std::vector does not work!") ENDIF(NOT STL_VECTOR_CHECK) CHECK_CXX_SOURCE_COMPILES("#include int main(void) { std::string s; s.assign(\"Hello, World!\"); return 0; } " STL_STRING_CHECK) IF(NOT STL_STRING_CHECK) MESSAGE(STATUS "!!!! STL std::string does not work!") ENDIF(NOT STL_STRING_CHECK) CHECK_CXX_SOURCE_COMPILES("#include int main(void) { try { throw std::logic_error(\"Ouch!\"); } catch(std::exception &e) { return 0; } return 0; } " STL_STDEXCEPT_CHECK) IF(NOT STL_STDEXCEPT_CHECK) MESSAGE(STATUS "!!!! STL std::logic_error/std::exception does not work!") ENDIF(NOT STL_STDEXCEPT_CHECK) ENDIF(UNIX) ENDIF(NOT WIN32) # ################################################################################ # Libraries # FIND_PATH(PCRE_INCLUDE pcre.h PATHS /opt/include /usr/include /usr/local/include DOC "Path where the PCRE header files can be found") IF (PCRE_INCLUDE) INCLUDE_DIRECTORIES(${PCRE_INCLUDE}) ENDIF(PCRE_INCLUDE) FIND_LIBRARY(PCRE_LIBRARY NAMES pcre PATHS /opt/lib /usr/lib /usr/local/lib DOC "Path where the PCRE library can be found") FIND_PATH(PCRECPP_INCLUDE pcrecpp.h PATHS /opt/include /usr/include /usr/local/include DOC "Path where the PCRE C++ header files can be found") IF (PCRECPP_INCLUDE) INCLUDE_DIRECTORIES(${PCRECPP_INCLUDE}) ENDIF(PCRECPP_INCLUDE) FIND_LIBRARY(PCRECPP_LIBRARY NAMES pcrecpp PATHS /opt/lib /usr/lib /usr/local/lib DOC "Path where the PCRE C++ library can be found") SET(PROJECT_LIBS pcre pcrecpp) # ################################################################################ # Compiler-specific flags # IF("${CMAKE_COMPILER_IS_GNUCXX}" MATCHES "1") SET(CMAKE_CXX_FLAGS "${CXX_FLAGS} -O3 -fomit-frame-pointer -funroll-loops ") #SET(CMAKE_CXX_FLAGS "${CXX_FLAGS} -O3 -fomit-frame-pointer -funroll-loops -D_DEBUG") #SET(CMAKE_CXX_FLAGS "${CXX_FLAGS} -Wno-long-long -g -D_DEBUG") ENDIF("${CMAKE_COMPILER_IS_GNUCXX}" MATCHES "1") INCLUDE_DIRECTORIES(Source) SET(LEMMATIZER_SRCS Source/LemmatizerLib/Lemmatizers.cpp Source/LemmatizerLib/Paradigm.cpp Source/LemmatizerLib/CreatePredictionBase.cpp Source/LemmatizerLib/PLMLineCollection.cpp Source/LemmatizerLib/Statistic.cpp Source/LemmatizerLib/MorphAutomat.cpp Source/LemmatizerLib/MorphAutomBuilder.cpp Source/LemmatizerLib/MorphDict.cpp Source/LemmatizerLib/MorphDictBuilder.cpp Source/LemmatizerLib/../common/PlmLine.cpp Source/LemmatizerLib/Predict.cpp Source/LemmatizerLib/../common/MorhologyHolder.cpp) SET(AGRAMTAB_SRCS Source/AgramtabLib/EngGramTab.cpp Source/AgramtabLib/GerGramTab.cpp Source/AgramtabLib/RusGramTab.cpp Source/AgramtabLib/agramtab_.cpp Source/AgramtabLib/../common/utilit.cpp) SET(GRAPHAN_SRCS Source/GraphanLib/C_desc.cpp Source/GraphanLib/Consent.cpp Source/GraphanLib/Cs_hiera.cpp Source/GraphanLib/GraphmatFile.cpp Source/GraphanLib/HtmlConv.cpp Source/GraphanLib/Nc_desc.cpp Source/GraphanLib/Writegra.cpp Source/GraphanLib/abbrev.cpp Source/GraphanLib/graline.cpp Source/GraphanLib/Oborots.cpp Source/GraphanLib/UnitHolder.cpp Source/GraphanLib/GraphanDicts.cpp Source/GraphanLib/Sentences.cpp) SET(STRUCTDICT_SRCS Source/StructDictLib/ItemsContainer.cpp Source/StructDictLib/Ross.cpp Source/StructDictLib/TempArticle.cpp) SET(MORPHWIZARD_SRCS Source/MorphWizardLib/wizard.cpp Source/MorphWizardLib/../PCRE/pcre_rml.cpp) SET(LEMCLIENT_SRCS Source/LemClient.cpp) ADD_LIBRARY(Lemmatizer-static STATIC ${LEMMATIZER_SRCS}) SET_TARGET_PROPERTIES(Lemmatizer-static PROPERTIES OUTPUT_NAME Lemmatizer-st) SET_TARGET_PROPERTIES(Lemmatizer-static PROPERTIES LINKER_LANGUAGE CXX) ADD_LIBRARY(Lemmatizer SHARED ${LEMMATIZER_SRCS}) SET_TARGET_PROPERTIES(Lemmatizer PROPERTIES OUTPUT_NAME Lemmatizer) SET_TARGET_PROPERTIES(Lemmatizer PROPERTIES LINKER_LANGUAGE CXX) SET_TARGET_PROPERTIES(Lemmatizer PROPERTIES VERSION ${LEM_VERSION_MAJOR}.${LEM_VERSION_MINOR}.${LEM_VERSION_PATCH} SOVERSION ${LEM_VERSION_MAJOR}) ADD_LIBRARY(Agramtab-static STATIC ${AGRAMTAB_SRCS}) SET_TARGET_PROPERTIES(Agramtab-static PROPERTIES OUTPUT_NAME Agramtab-st) SET_TARGET_PROPERTIES(Agramtab-static PROPERTIES LINKER_LANGUAGE CXX) ADD_LIBRARY(Agramtab SHARED ${AGRAMTAB_SRCS}) SET_TARGET_PROPERTIES(Agramtab PROPERTIES OUTPUT_NAME Agramtab) SET_TARGET_PROPERTIES(Agramtab PROPERTIES LINKER_LANGUAGE CXX) SET_TARGET_PROPERTIES(Agramtab PROPERTIES VERSION ${LEM_VERSION_MAJOR}.${LEM_VERSION_MINOR}.${LEM_VERSION_PATCH} SOVERSION ${LEM_VERSION_MAJOR}) ADD_LIBRARY(Graphan-static STATIC ${GRAPHAN_SRCS}) SET_TARGET_PROPERTIES(Graphan-static PROPERTIES OUTPUT_NAME Graphan-st) SET_TARGET_PROPERTIES(Graphan-static PROPERTIES LINKER_LANGUAGE CXX) ADD_LIBRARY(Graphan SHARED ${GRAPHAN_SRCS}) SET_TARGET_PROPERTIES(Graphan PROPERTIES OUTPUT_NAME Graphan) SET_TARGET_PROPERTIES(Graphan PROPERTIES LINKER_LANGUAGE CXX) SET_TARGET_PROPERTIES(Graphan PROPERTIES VERSION ${LEM_VERSION_MAJOR}.${LEM_VERSION_MINOR}.${LEM_VERSION_PATCH} SOVERSION ${LEM_VERSION_MAJOR}) ADD_LIBRARY(StructDict-static STATIC ${STRUCTDICT_SRCS}) SET_TARGET_PROPERTIES(StructDict-static PROPERTIES OUTPUT_NAME StructDict-st) SET_TARGET_PROPERTIES(StructDict-static PROPERTIES LINKER_LANGUAGE CXX) ADD_LIBRARY(StructDict SHARED ${STRUCTDICT_SRCS}) SET_TARGET_PROPERTIES(StructDict PROPERTIES OUTPUT_NAME StructDict) SET_TARGET_PROPERTIES(StructDict PROPERTIES LINKER_LANGUAGE CXX) SET_TARGET_PROPERTIES(StructDict PROPERTIES VERSION ${LEM_VERSION_MAJOR}.${LEM_VERSION_MINOR}.${LEM_VERSION_PATCH} SOVERSION ${LEM_VERSION_MAJOR}) ADD_LIBRARY(MorphWizard-static STATIC ${MORPHWIZARD_SRCS}) SET_TARGET_PROPERTIES(MorphWizard-static PROPERTIES OUTPUT_NAME MorphWizard-st) SET_TARGET_PROPERTIES(MorphWizard-static PROPERTIES LINKER_LANGUAGE CXX) ADD_LIBRARY(MorphWizard SHARED ${MORPHWIZARD_SRCS}) SET_TARGET_PROPERTIES(MorphWizard PROPERTIES OUTPUT_NAME MorphWizard) SET_TARGET_PROPERTIES(MorphWizard PROPERTIES LINKER_LANGUAGE CXX) SET_TARGET_PROPERTIES(MorphWizard PROPERTIES VERSION ${LEM_VERSION_MAJOR}.${LEM_VERSION_MINOR}.${LEM_VERSION_PATCH} SOVERSION ${LEM_VERSION_MAJOR}) ADD_LIBRARY(LemClient-static STATIC ${LEMCLIENT_SRCS}) SET_TARGET_PROPERTIES(LemClient-static PROPERTIES OUTPUT_NAME LemClient-st) SET_TARGET_PROPERTIES(LemClient-static PROPERTIES LINKER_LANGUAGE CXX) ADD_LIBRARY(LemClient SHARED ${LEMCLIENT_SRCS}) SET_TARGET_PROPERTIES(LemClient PROPERTIES OUTPUT_NAME LemClient) SET_TARGET_PROPERTIES(LemClient PROPERTIES LINKER_LANGUAGE CXX) SET_TARGET_PROPERTIES(LemClient PROPERTIES VERSION ${LEM_VERSION_MAJOR}.${LEM_VERSION_MINOR}.${LEM_VERSION_PATCH} SOVERSION ${LEM_VERSION_MAJOR}) TARGET_LINK_LIBRARIES(LemClient Lemmatizer Agramtab Graphan StructDict MorphWizard ${PCRE_LIBRARY} ${PCRECPP_LIBRARY}) SET(EXECUTABLE_OUTPUT_PATH Bin CACHE PATH "Single output directory for building all executables.") ADD_EXECUTABLE(MorphGen Source/MorphGen/MorphGen.cpp) TARGET_LINK_LIBRARIES(MorphGen Lemmatizer Agramtab Graphan StructDict MorphWizard ${PCRE_LIBRARY} ${PCRECPP_LIBRARY}) ADD_EXECUTABLE(TestLem Source/TestLem/TestLem.cpp) TARGET_LINK_LIBRARIES(TestLem Lemmatizer Agramtab Graphan StructDict MorphWizard ${PCRE_LIBRARY} ${PCRECPP_LIBRARY}) ADD_EXECUTABLE(LemClientTest Test/LemClientTest.cpp) TARGET_LINK_LIBRARIES(LemClientTest LemClient) ADD_EXECUTABLE(FileLem Source/FileLem/FileLem.cpp) TARGET_LINK_LIBRARIES(FileLem Lemmatizer Agramtab Graphan StructDict MorphWizard ${PCRE_LIBRARY} ${PCRECPP_LIBRARY}) ADD_EXECUTABLE(StructDictLoader Source/StructDictLoader/Main.cpp) TARGET_LINK_LIBRARIES(StructDictLoader Lemmatizer Agramtab Graphan StructDict MorphWizard ${PCRE_LIBRARY} ${PCRECPP_LIBRARY}) # Install libraries INSTALL(TARGETS Lemmatizer-static Lemmatizer Agramtab-static Agramtab Graphan-static Graphan StructDict-static StructDict MorphWizard-static MorphWizard LemClient-static LemClient DESTINATION lib/lemmatizer2) #install binaries INSTALL(FILES Bin/MorphGen Bin/TestLem Bin/LemClientTest Bin/FileLem Bin/StructDictLoader DESTINATION bin PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ) #install headers INSTALL(FILES Source/AgramtabLib/EngGramTab.h Source/AgramtabLib/GerGramTab.h Source/AgramtabLib/RusGramTab.h Source/AgramtabLib/StdGramtab.h Source/AgramtabLib/agramtab_.h Source/AgramtabLib/eng_consts.h Source/AgramtabLib/ger_consts.h Source/AgramtabLib/morph_const.h Source/AgramtabLib/rus_consts.h DESTINATION include/lemmatizer2/AgramtabLib) INSTALL(FILES Source/GraphanLib/Consent.h Source/GraphanLib/Descriptors.h Source/GraphanLib/GraphanDicts.h Source/GraphanLib/GraphmatFile.h Source/GraphanLib/HTMLConv.h Source/GraphanLib/StdGraph.h Source/GraphanLib/UnitHolder.h Source/GraphanLib/abbrev.h Source/GraphanLib/graline.h DESTINATION include/lemmatizer2/GraphanLib) INSTALL(FILES Source/LemmatizerLib/Lemmatizers.h Source/LemmatizerLib/MorphAutomBuilder.h Source/LemmatizerLib/MorphAutomat.h Source/LemmatizerLib/MorphDict.h Source/LemmatizerLib/MorphDictBuilder.h Source/LemmatizerLib/PLMLineCollection.h Source/LemmatizerLib/Paradigm.h Source/LemmatizerLib/Predict.h Source/LemmatizerLib/StaticVectorMap.h Source/LemmatizerLib/Statistic.h Source/LemmatizerLib/StdMorph.h DESTINATION include/lemmatizer2/LemmatizerLib) INSTALL(FILES Source/MorphWizardLib/FormInfo.h Source/MorphWizardLib/OperationMeter.h Source/MorphWizardLib/wizard.h DESTINATION include/lemmatizer2/MorphWizardLib) INSTALL(FILES Source/StructDictLib/Domen.h Source/StructDictLib/Field.h Source/StructDictLib/ItemsContainer.h Source/StructDictLib/LessDomItem.h Source/StructDictLib/Ross.h Source/StructDictLib/Signat.h Source/StructDictLib/StdRoss.h Source/StructDictLib/StructDictConsts.h Source/StructDictLib/TempArticle.h Source/StructDictLib/TextField.h DESTINATION include/lemmatizer2/StructDictLib) INSTALL(FILES Source/PCRE/pcre_rml.h DESTINATION include/lemmatizer2/PCRE) INSTALL(FILES Source/common/CExpc.h Source/common/COMSyntaxHolder.h Source/common/Chunk.h Source/common/DDCInternalError.h Source/common/DDC_common.h Source/common/DwdsThesaurus.h Source/common/GramInfo.h Source/common/Graspace.h Source/common/MorphologyHolder.h Source/common/PlmLine.h Source/common/SyntaxHolder.h Source/common/cgic.h Source/common/cortege.h Source/common/imports.h Source/common/rus_numerals.h Source/common/string_socket.h Source/common/string_tokenizer.h Source/common/util_classes.h Source/common/utilit.h DESTINATION include/lemmatizer2/common) INSTALL(FILES Source/LemClient.hpp DESTINATION include/lemmatizer2)