You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # End of configuration
  2. SET(LIBSTEM_ALGORITHMS danish dutch english finnish french german hungarian
  3. italian norwegian porter portuguese romanian
  4. russian spanish swedish turkish)
  5. SET(KOI8_ALGORITHMS russian)
  6. SET(ISO_8859_1_ALGORITHMS danish dutch english finnish french german italian
  7. norwegian porter portuguese spanish swedish)
  8. SET(ISO_8859_2_ALGORITHMS hungarian romanian)
  9. SET(OTHER_ALGORITHMS german2 kraaij_pohlmann lovins)
  10. SET(ALL_ALGORITHMS ${LIBSTEM_ALGORITHMS} ${OTHER_ALGORITHMS})
  11. SET(COMPILER_SOURCES compiler/space.c
  12. compiler/tokeniser.c
  13. compiler/analyser.c
  14. compiler/generator.c
  15. compiler/driver.c
  16. compiler/generator_java.c)
  17. SET(SNOWBALL_RUNTIME runtime/api.c
  18. runtime/utilities.c)
  19. SET(LIBSTEMMER_SOURCES libstemmer/libstemmer.c)
  20. SET(LIBSTEMMER_UTF8_SOURCES libstemmer/libstemmer_utf8.c)
  21. #LIBSTEMMER_UTF8_SOURCES = libstemmer/libstemmer_utf8.c
  22. #LIBSTEMMER_HEADERS = include/libstemmer.h libstemmer/modules.h libstemmer/modules_utf8.h
  23. #LIBSTEMMER_EXTRA = libstemmer/modules.txt libstemmer/modules_utf8.txt libstemmer/libstemmer_c.in
  24. SET(STEMWORDS_SOURCES examples/stemwords.c)
  25. SET(MODULES_H "modules.h")
  26. CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libstemmer/libstemmer_c.in ${CMAKE_CURRENT_BINARY_DIR}/libstemmer/libstemmer.c @ONLY)
  27. MACRO(gen_stem IN ENCODING)
  28. FOREACH(_it ${IN})
  29. SET(_base "${CMAKE_CURRENT_BINARY_DIR}/libstemmer/stem_${ENCODING}_${_it}")
  30. SET(_header "${_base}.h")
  31. SET(_source "${_base}.c")
  32. STRING(REPLACE "UTF_8" "Unicode" _in_enc "${ENCODING}")
  33. SET(_input "${CMAKE_CURRENT_SOURCE_DIR}/algorithms/${_it}/stem_${_in_enc}.sbl")
  34. IF(${_in_enc} STREQUAL "Unicode" AND NOT EXISTS ${_input})
  35. ADD_CUSTOM_COMMAND(OUTPUT ${_source}
  36. COMMAND ${CMAKE_CURRENT_BINARY_DIR}/snowball "${CMAKE_CURRENT_SOURCE_DIR}/algorithms/${_it}/stem_ISO_8859_1.sbl" -o ${_base} -eprefix ${_it}_${ENCODING}_ -r ${CMAKE_CURRENT_SOURCE_DIR}/runtime -u
  37. DEPENDS snowball)
  38. LIST(APPEND STEMMER_SOURCES ${_source})
  39. ELSE()
  40. IF(EXISTS "${_input}")
  41. ADD_CUSTOM_COMMAND(OUTPUT ${_source}
  42. COMMAND ${CMAKE_CURRENT_BINARY_DIR}/snowball ${_input} -o ${_base} -eprefix ${_it}_${ENCODING}_ -r ${CMAKE_CURRENT_SOURCE_DIR}/runtime -u
  43. DEPENDS snowball)
  44. LIST(APPEND STEMMER_SOURCES ${_source})
  45. ENDIF()
  46. ENDIF()
  47. ENDFOREACH()
  48. ENDMACRO()
  49. INCLUDE_DIRECTORIES("include")
  50. INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/libstemmer")
  51. ADD_EXECUTABLE(snowball ${COMPILER_SOURCES})
  52. ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/libstemmer/modules.h
  53. COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/libstemmer/mkmodules.pl -f ${CMAKE_CURRENT_BINARY_DIR}/libstemmer/modules.h ${CMAKE_CURRENT_BINARY_DIR}/libstemmer ${CMAKE_CURRENT_SOURCE_DIR}/libstemmer/modules.txt ${CMAKE_CURRENT_BINARY_DIR}/libstemmer/mkinc.mak)
  54. ADD_CUSTOM_TARGET(modules DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libstemmer/modules.h")
  55. SET(STEMMER_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/libstemmer/libstemmer.c")
  56. ADD_CUSTOM_TARGET(stemmer_deps ALL)
  57. ADD_DEPENDENCIES(stemmer_deps modules)
  58. gen_stem("${LIBSTEM_ALGORITHMS}" "UTF_8")
  59. gen_stem("${KOI8_ALGORITHMS}" "KOI8_R")
  60. gen_stem("${ISO_8859_1_ALGORITHMS}" "ISO_8859_1")
  61. gen_stem("${ISO_8859_2_ALGORITHMS}" "ISO_8859_2")
  62. ADD_LIBRARY(stemmer ${LINK_TYPE} ${SNOWBALL_RUNTIME} ${STEMMER_SOURCES})
  63. ADD_DEPENDENCIES(stemmer stemmer_deps)
  64. ADD_EXECUTABLE(stemwords ${STEMWORDS_SOURCES})
  65. TARGET_LINK_LIBRARIES(stemwords stemmer)