TALP-UPC / FreeLing

FreeLing project source code
Other
251 stars 96 forks source link

Freeling installation on MacOS #90

Open arademaker opened 4 years ago

arademaker commented 4 years ago

The boost library in brew does not contain the with-icu4c anymore:

$ brew install boost --with-icu4c
...
Error: invalid option: --with-icu4c
arademaker commented 4 years ago

In the make step, I got

$ make
Scanning dependencies of target dynet
[  1%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/aligned-mem-pool.cc.o
[  1%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/cfsm-builder.cc.o
[  1%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/deep-lstm.cc.o
[  2%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/devices.cc.o
[  2%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/dict.cc.o
[  2%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/dim.cc.o
[  3%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/dynet.cc.o
[  3%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/exec.cc.o
[  3%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/expr.cc.o
[  3%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/fast-lstm.cc.o
[  4%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/globals.cc.o
[  4%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/grad-check.cc.o
[  4%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/graph.cc.o
[  5%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/gru.cc.o
[  5%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/hsm-builder.cc.o
[  5%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/init.cc.o
[  6%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/io.cc.o
/Users/ar/work/fl/freeling/src/libdynet/dynet/io.cc:7:10: fatal error: 'boost/iostreams/filtering_streambuf.hpp' file not found
#include <boost/iostreams/filtering_streambuf.hpp>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [src/libdynet/dynet/CMakeFiles/dynet.dir/io.cc.o] Error 1
make[1]: *** [src/libdynet/dynet/CMakeFiles/dynet.dir/all] Error 2
make: *** [all] Error 2
arademaker commented 4 years ago

Trying with the release 4.1 instead of using the MASTER branch I got another error:

[ 91%] Linking CXX shared library libfreeling.dylib
Undefined symbols for architecture x86_64:
  "boost::basic_regex<int, boost::icu_regex_traits>::do_assign(int const*, int const*, unsigned int)", referenced from:
      boost::basic_regex<int, boost::icu_regex_traits>::assign(int const*, int const*, unsigned int) in regexp.cc.o
  "boost::re_detail::get_mem_block()", referenced from:
      boost::re_detail::perl_matcher<std::__1::__wrap_iter<wchar_t const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<wchar_t const*> > >, boost::icu_regex_traits>::extend_stack() in regexp.cc.o
      boost::re_detail::save_state_init::save_state_init(boost::re_detail::saved_state**, boost::re_detail::saved_state**) in regexp.cc.o
  "boost::re_detail::put_mem_block(void*)", referenced from:
      boost::re_detail::perl_matcher<std::__1::__wrap_iter<wchar_t const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<wchar_t const*> > >, boost::icu_regex_traits>::unwind_extra_block(bool) in regexp.cc.o
      boost::re_detail::save_state_init::~save_state_init() in regexp.cc.o
  "boost::re_detail::verify_options(unsigned int, boost::regex_constants::_match_flags)", referenced from:
      boost::re_detail::perl_matcher<std::__1::__wrap_iter<wchar_t const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<wchar_t const*> > >, boost::icu_regex_traits>::find_imp() in regexp.cc.o
      boost::re_detail::perl_matcher<std::__1::__wrap_iter<wchar_t const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<wchar_t const*> > >, boost::icu_regex_traits>::match_imp() in regexp.cc.o
  "boost::re_detail::raise_runtime_error(std::runtime_error const&)", referenced from:
      void boost::re_detail::raise_error<boost::regex_traits_wrapper<boost::icu_regex_traits> >(boost::regex_traits_wrapper<boost::icu_regex_traits> const&, boost::regex_constants::error_type) in regexp.cc.o
  "boost::re_detail::get_default_error_string(boost::regex_constants::error_type)", referenced from:
      boost::icu_regex_traits::error_string(boost::regex_constants::error_type) const in regexp.cc.o
  "boost::re_detail::is_combining_implementation(unsigned short)", referenced from:
      bool boost::re_detail::is_combining<int>(int) in regexp.cc.o
  "boost::re_detail::icu_regex_traits_implementation::do_transform(int const*, int const*, icu_48::Collator const*) const", referenced from:
      boost::re_detail::icu_regex_traits_implementation::transform(int const*, int const*) const in regexp.cc.o
      boost::re_detail::icu_regex_traits_implementation::transform_primary(int const*, int const*) const in regexp.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/libfreeling/libfreeling.dylib] Error 1
make[1]: *** [src/libfreeling/CMakeFiles/freeling.dir/all] Error 2
make: *** [all] Error 2

Any idea @lluisp ?

lluisp commented 4 years ago

I'd say some boost or icu libraries are missing in your system.

arademaker commented 4 years ago

To prepare the system, I followed the procedure in https://freeling-user-manual.readthedocs.io/en/v4.1/installation/requirements-mac/

$ brew info boost
boost: stable 1.71.0 (bottled), HEAD
Collection of portable C++ source libraries
https://www.boost.org/
/usr/local/Cellar/boost/1.71.0 (14,377 files, 522.8MB) *
  Poured from bottle on 2019-09-22 at 12:51:14
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/boost.rb
==> Dependencies
Required: icu4c ✔
==> Options
--HEAD
    Install HEAD version
==> Analytics
install: 54,158 (30 days), 124,979 (90 days), 649,670 (365 days)
install_on_request: 18,509 (30 days), 44,008 (90 days), 207,561 (365 days)
build_error: 0 (30 days)

Looking more carefully in the docs, I found that I need extra paramenters in the cmake (https://freeling-user-manual.readthedocs.io/en/v4.1/installation/installation-mac/):

I tried:

$ cmake .. -DPYTHON3_API=ON -DICU_ROOT=/usr/local/opt/icu4c
$ make
...
[ 91%] Linking CXX shared library libfreeling.dylib
Undefined symbols for architecture x86_64:
  "icu_64::Collator::createInstance(icu_64::Locale const&, UErrorCode&)", referenced from:
      boost::re_detail_107100::icu_regex_traits_implementation::icu_regex_traits_implementation(icu_64::Locale const&) in regexp.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/libfreeling/libfreeling.dylib] Error 1
make[1]: *** [src/libfreeling/CMakeFiles/freeling.dir/all] Error 2
make: *** [all] Error 2
lluisp commented 4 years ago

maybe your boost/icu version is different than the one I used to write the manual...

run "make -VERBOSE=1" to see if you get more information

arademaker commented 4 years ago

Make (at least in macOS) does not understand the parameter -VERBOSE=1! I tried with -d but I got the same error without any further information.

lluisp commented 4 years ago

try without the dash make VERBOSE=1

arademaker commented 4 years ago

Nice, make VERBOSE=1 worked. Below the step where the error occurs:

[ 29%] Linking CXX shared library libfreeling.dylib
cd /Users/ar/work/fl/FreeLing-4.1/build/src/libfreeling && /usr/local/Cellar/cmake/3.15.3/bin/cmake -E cmake_link_script CMakeFiles/freeling.dir/link.txt --verbose=1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.14 -dynamiclib -Wl,-headerpad_max_install_names  -o libfreeling.dylib -install_name @rpath/libfreeling.dylib CMakeFiles/freeling.dir/RE_map.cc.o CMakeFiles/freeling.dir/accents/accents.cc.o CMakeFiles/freeling.dir/accents/accents_default.cc.o CMakeFiles/freeling.dir/accents/accents_es.cc.o CMakeFiles/freeling.dir/accents/accents_gl.cc.o CMakeFiles/freeling.dir/alternatives.cc.o CMakeFiles/freeling.dir/analyzer.cc.o CMakeFiles/freeling.dir/automat.cc.o CMakeFiles/freeling.dir/bioner.cc.o CMakeFiles/freeling.dir/chart_parser/chart.cc.o CMakeFiles/freeling.dir/chart_parser/chart_parser.cc.o CMakeFiles/freeling.dir/chart_parser/grammar.cc.o CMakeFiles/freeling.dir/compounds.cc.o CMakeFiles/freeling.dir/configfile.cc.o CMakeFiles/freeling.dir/coref/mention_detector.cc.o CMakeFiles/freeling.dir/coref/mention_detector_constit.cc.o CMakeFiles/freeling.dir/coref/mention_detector_dep.cc.o CMakeFiles/freeling.dir/coref/relaxcor/relaxcor.cc.o CMakeFiles/freeling.dir/coref/relaxcor/relaxcor_fex.cc.o CMakeFiles/freeling.dir/coref/relaxcor/relaxcor_fex_abs.cc.o CMakeFiles/freeling.dir/coref/relaxcor/relaxcor_fex_constit.cc.o CMakeFiles/freeling.dir/coref/relaxcor/relaxcor_fex_dep.cc.o CMakeFiles/freeling.dir/coref/relaxcor/relaxcor_model.cc.o CMakeFiles/freeling.dir/coref/relaxcor/relaxcor_modelDT.cc.o CMakeFiles/freeling.dir/corrector.cc.o CMakeFiles/freeling.dir/csr_kb.cc.o CMakeFiles/freeling.dir/database.cc.o CMakeFiles/freeling.dir/dates/dates.cc.o CMakeFiles/freeling.dir/dates/dates_ca.cc.o CMakeFiles/freeling.dir/dates/dates_de.cc.o CMakeFiles/freeling.dir/dates/dates_default.cc.o CMakeFiles/freeling.dir/dates/dates_en.cc.o CMakeFiles/freeling.dir/dates/dates_es.cc.o CMakeFiles/freeling.dir/dates/dates_fr.cc.o CMakeFiles/freeling.dir/dates/dates_gl.cc.o CMakeFiles/freeling.dir/dates/dates_pt.cc.o CMakeFiles/freeling.dir/dates/dates_ru.cc.o CMakeFiles/freeling.dir/dependency_parsing/dep_rules.cc.o CMakeFiles/freeling.dir/dependency_parsing/dep_treeler.cc.o CMakeFiles/freeling.dir/dependency_parsing/dep_txala.cc.o CMakeFiles/freeling.dir/dictionary.cc.o CMakeFiles/freeling.dir/embeddings.cc.o CMakeFiles/freeling.dir/fex/fex.cc.o CMakeFiles/freeling.dir/fex/fex_lexicon.cc.o CMakeFiles/freeling.dir/fex/fex_rule.cc.o CMakeFiles/freeling.dir/fex/nerc_features.cc.o CMakeFiles/freeling.dir/foma_FSM.cc.o CMakeFiles/freeling.dir/hmm_tagger.cc.o CMakeFiles/freeling.dir/lang_ident/idioma.cc.o CMakeFiles/freeling.dir/lang_ident/lang_ident.cc.o CMakeFiles/freeling.dir/language.cc.o CMakeFiles/freeling.dir/lexer.cc.o CMakeFiles/freeling.dir/locutions.cc.o CMakeFiles/freeling.dir/maco.cc.o CMakeFiles/freeling.dir/maco_options.cc.o CMakeFiles/freeling.dir/nec.cc.o CMakeFiles/freeling.dir/ner.cc.o CMakeFiles/freeling.dir/ner_module.cc.o CMakeFiles/freeling.dir/np.cc.o CMakeFiles/freeling.dir/numbers/numbers.cc.o CMakeFiles/freeling.dir/numbers/numbers_ca.cc.o CMakeFiles/freeling.dir/numbers/numbers_cs.cc.o CMakeFiles/freeling.dir/numbers/numbers_de.cc.o CMakeFiles/freeling.dir/numbers/numbers_default.cc.o CMakeFiles/freeling.dir/numbers/numbers_en.cc.o CMakeFiles/freeling.dir/numbers/numbers_es.cc.o CMakeFiles/freeling.dir/numbers/numbers_gl.cc.o CMakeFiles/freeling.dir/numbers/numbers_it.cc.o CMakeFiles/freeling.dir/numbers/numbers_pt.cc.o CMakeFiles/freeling.dir/numbers/numbers_ru.cc.o CMakeFiles/freeling.dir/omlet/adaboost.cc.o CMakeFiles/freeling.dir/omlet/classifier.cc.o CMakeFiles/freeling.dir/omlet/dataset.cc.o CMakeFiles/freeling.dir/omlet/example.cc.o CMakeFiles/freeling.dir/omlet/libsvm.cc.o CMakeFiles/freeling.dir/omlet/svm.cc.o CMakeFiles/freeling.dir/omlet/viterbi.cc.o CMakeFiles/freeling.dir/omlet/weakrule.cc.o CMakeFiles/freeling.dir/output/conll_handler.cc.o CMakeFiles/freeling.dir/output/input_conll.cc.o CMakeFiles/freeling.dir/output/input_freeling.cc.o CMakeFiles/freeling.dir/output/input_handler.cc.o CMakeFiles/freeling.dir/output/io_handler.cc.o CMakeFiles/freeling.dir/output/output.cc.o CMakeFiles/freeling.dir/output/output_conll.cc.o CMakeFiles/freeling.dir/output/output_freeling.cc.o CMakeFiles/freeling.dir/output/output_handler.cc.o CMakeFiles/freeling.dir/output/output_json.cc.o CMakeFiles/freeling.dir/output/output_naf.cc.o CMakeFiles/freeling.dir/output/output_train.cc.o CMakeFiles/freeling.dir/output/output_xml.cc.o CMakeFiles/freeling.dir/phonetics.cc.o CMakeFiles/freeling.dir/prefTree.cc.o CMakeFiles/freeling.dir/probabilities.cc.o CMakeFiles/freeling.dir/processor.cc.o CMakeFiles/freeling.dir/punts.cc.o CMakeFiles/freeling.dir/quantities/quantities.cc.o CMakeFiles/freeling.dir/quantities/quantities_ca.cc.o CMakeFiles/freeling.dir/quantities/quantities_default.cc.o CMakeFiles/freeling.dir/quantities/quantities_en.cc.o CMakeFiles/freeling.dir/quantities/quantities_es.cc.o CMakeFiles/freeling.dir/quantities/quantities_gl.cc.o CMakeFiles/freeling.dir/quantities/quantities_pt.cc.o CMakeFiles/freeling.dir/quantities/quantities_ru.cc.o CMakeFiles/freeling.dir/regexp.cc.o CMakeFiles/freeling.dir/relax_tagger/constraint_grammar.cc.o CMakeFiles/freeling.dir/relax_tagger/relax.cc.o CMakeFiles/freeling.dir/relax_tagger/relax_tagger.cc.o CMakeFiles/freeling.dir/semdb.cc.o CMakeFiles/freeling.dir/semgraph/ent_extract.cc.o CMakeFiles/freeling.dir/semgraph/rel_extract.cc.o CMakeFiles/freeling.dir/semgraph/rel_extract_SPR.cc.o CMakeFiles/freeling.dir/semgraph/rel_extract_SRL.cc.o CMakeFiles/freeling.dir/semgraph/semgraph.cc.o CMakeFiles/freeling.dir/semgraph/semgraph_extract.cc.o CMakeFiles/freeling.dir/senses.cc.o CMakeFiles/freeling.dir/splitter.cc.o CMakeFiles/freeling.dir/suffixes.cc.o CMakeFiles/freeling.dir/summarizer/lexical_chain.cc.o CMakeFiles/freeling.dir/summarizer/relation.cc.o CMakeFiles/freeling.dir/summarizer/summarizer.cc.o CMakeFiles/freeling.dir/tagger.cc.o CMakeFiles/freeling.dir/tagset.cc.o CMakeFiles/freeling.dir/tokenizer.cc.o CMakeFiles/freeling.dir/traces.cc.o CMakeFiles/freeling.dir/ukb.cc.o CMakeFiles/freeling.dir/util.cc.o CMakeFiles/freeling.dir/version.cc.o  -L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,-rpath,/Users/ar/work/fl/FreeLing-4.1/build/src/libfoma -Wl,-rpath,/Users/ar/work/fl/FreeLing-4.1/build/src/libtreeler ../libfoma/libfoma.dylib ../libtreeler/libtreeler.dylib /usr/local/lib/libboost_regex.dylib /usr/local/lib/libboost_filesystem.dylib /usr/local/lib/libboost_thread-mt.dylib /usr/local/lib/libboost_program_options.dylib /usr/local/opt/icu4c/lib/libicuuc.dylib /usr/lib/libz.dylib
Undefined symbols for architecture x86_64:
  "icu_64::Collator::createInstance(icu_64::Locale const&, UErrorCode&)", referenced from:
      boost::re_detail_107100::icu_regex_traits_implementation::icu_regex_traits_implementation(icu_64::Locale const&) in regexp.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/libfreeling/libfreeling.dylib] Error 1
make[1]: *** [src/libfreeling/CMakeFiles/freeling.dir/all] Error 2
make: *** [all] Error 2
lluisp commented 4 years ago

That definitely looks like a boost/icu installation problem. Can you check which libraries you have in /usr/local/opt/icu4c ? You should have libicui18n among them. Maybe it has to be added to the compilation command

lluisp commented 4 years ago

I updated my brew boost installation and I got:

$ brew upgrade boost
==> Upgrading 1 outdated package:
boost 1.66.0 -> 1.71.0
==> Upgrading boost 
==> Installing dependencies for boost: icu4c
==> Installing boost dependency: icu4c
==> Downloading https://homebrew.bintray.com/bottles/icu4c-64.2.high_sierra.bott
le.tar.gz
==> Downloading from https://akamai.bintray.com/02/02afdd6a472c31351e46a3b2a38c1
c77354f0cc9199c3dbd7e06bc171b
######################################################################## 100.0%
==> Pouring icu4c-64.2.high_sierra.bottle.tar.gz
==> Caveats
icu4c is keg-only, which means it was not symlinked into /usr/local,
because macOS provides libicucore.dylib (but nothing else).

If you need to have icu4c first in your PATH run:
  echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile
  echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile

For compilers to find icu4c you may need to set:
  export LDFLAGS="-L/usr/local/opt/icu4c/lib"
  export CPPFLAGS="-I/usr/local/opt/icu4c/include"

So, you need to define those paths for the compiler to work.

lluisp commented 4 years ago

It seems that the paths are not enough. It looks like newer icu versions in brew do not pull each other. So, you need to add the libraries explicitly. Edit file src/libfreeling/CMakeLists.txt and change the line "target_link_libraries..." to add "${ICU_I18N_LIBRARY)" to the list.

Then, run all the process from scratch (i.e. from "cmake" command on a clean build directory)

arademaker commented 4 years ago

OK, I was able to compile with

$ cmake .. -DICU_ROOT=/usr/local/opt/icu4c
$ make

after editing the PATHs in the .profile . But it failed with the flag to the PYTHON3 API:

cmake .. -DPYTHON3_API=ON -DICU_ROOT=/usr/local/opt/icu4c

Above, just to properly document the issue, we must add in the list target_link_libraries the entry ${ICU_I18N_LIBRARY}.

lluisp commented 4 years ago

I already updated the master verision in GH with the right target_link_libraries

What was the error with the ptyhon API ?

arademaker commented 4 years ago

The error with the make VERBOSE=1 is

[100%] Linking CXX shared library _pyfreeling.dylib
cd /Users/ar/work/fl/FreeLing-4.1/build/APIs/python3 && /usr/local/Cellar/cmake/3.15.3/bin/cmake -E cmake_link_script CMakeFiles/_pyfreeling.dir/link.txt --verbose=1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.14 -dynamiclib -Wl,-headerpad_max_install_names -L/usr/local/opt/icu4c/lib -o _pyfreeling.dylib -install_name @rpath/_pyfreeling.dylib CMakeFiles/_pyfreeling.dir/CMakeFiles/_pyfreeling.dir/freeling_pythonAPIPYTHON_wrap.cxx.o  -L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,-rpath,/Users/ar/work/fl/FreeLing-4.1/build/src/libfreeling -Wl,-rpath,/Users/ar/work/fl/FreeLing-4.1/build/src/libfoma -Wl,-rpath,/Users/ar/work/fl/FreeLing-4.1/build/src/libtreeler ../../src/libfreeling/libfreeling.dylib ../../src/libfoma/libfoma.dylib ../../src/libtreeler/libtreeler.dylib /usr/lib/libz.dylib /usr/local/lib/libboost_regex.dylib /usr/local/lib/libboost_filesystem.dylib /usr/local/lib/libboost_thread-mt.dylib /usr/local/lib/libboost_program_options.dylib /usr/local/opt/icu4c/lib/libicuuc.dylib /usr/local/opt/icu4c/lib/libicui18n.dylib
Undefined symbols for architecture x86_64:
  "_PyArg_UnpackTuple", referenced from:
      SwigPyObject_own(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyBool_FromLong", referenced from:
      SWIG_From_bool(bool) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_richcompare(SwigPyObject*, SwigPyObject*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_own(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyBool_Type", referenced from:
      SWIG_AsVal_bool(_object*, bool*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyBytes_AsStringAndSize", referenced from:
      SWIG_Python_str_AsChar(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCFunction_NewEx", referenced from:
      SWIG_PyInstanceMethod_New(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCFunction_Type", referenced from:
      SWIG_PyInstanceMethod_New(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCapsule_GetPointer", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_DestroyModule(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCapsule_Import", referenced from:
      SWIG_Python_GetModule(void*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCapsule_New", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetModule(swig_module_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_GetItem", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_New", referenced from:
      SWIG_Python_TypeCache() in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_SetItem", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetSwigThis(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_SetItemString", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_InstallConstants(_object*, swig_const_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetConstant(_object*, char const*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_Clear", referenced from:
      _wrap_SwigPyIterator___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___add__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ref__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreeSiblingIteratorNode___ref__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyErr_Fetch", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_Format", referenced from:
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_getattr(swig_varlinkobject*, char*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_setattr(swig_varlinkobject*, char*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_GivenExceptionMatches", referenced from:
      SWIG_Python_TypeErrorOccurred(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_Occurred", referenced from:
      SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_GetSwigThis(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_AsVal_unsigned_SS_long(_object*, unsigned long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_TypeErrorOccurred(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_AsVal_long(_object*, long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_GetModule(void*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyErr_Restore", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_SetObject", referenced from:
      SWIG_Python_SetErrorObj(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_SetString", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetErrorMsg(_object*, char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_append(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyErr_WriteUnraisable", referenced from:
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_AttributeError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_getattr(swig_varlinkobject*, char*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_setattr(swig_varlinkobject*, char*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_IOError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_IndexError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_MemoryError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_OverflowError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<int, std::__1::allocator<int> >, int>::from(std::__1::list<int, std::__1::allocator<int> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > >::from(std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::from(std::__1::list<freeling::word, std::__1::allocator<freeling::word> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double>, std::__1::allocator<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double> > >, std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double> >::from(std::__1::list<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double>, std::__1::allocator<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >, freeling::alternative>::from(std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >, freeling::analysis>::from(std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyExc_RuntimeError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_ExceptionType(swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_StopIteration", referenced from:
      _wrap_SwigPyIterator_value(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator_next(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___next__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator_previous(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator_advance(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___iadd__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___isub__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyExc_SyntaxError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_SystemError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_TypeError", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_TypeErrorOccurred(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_append(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyExc_ValueError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_ZeroDivisionError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyFloat_AsDouble", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyFloat_FromDouble", referenced from:
      _wrap_PairDoubleString_first_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_PairStringDouble_second_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_analysis_get_prob(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_analysis_get_distance(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_config_options_MACO_ProbabilityThreshold_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_config_options_TAGGER_RelaxScaleFactor_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_config_options_TAGGER_RelaxEpsilon_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyFloat_Type", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyImport_AddModule", referenced from:
      SWIG_Python_SetModule(swig_module_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyInstanceMethod_New", referenced from:
      SWIG_PyInstanceMethod_New(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsDouble", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsLong", referenced from:
      SWIG_AsVal_long(_object*, long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsUnsignedLong", referenced from:
      SWIG_AsVal_unsigned_SS_long(_object*, unsigned long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsUnsignedLongLong", referenced from:
      SWIG_AsVal_unsigned_SS_long_SS_long(_object*, unsigned long long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromLong", referenced from:
      SWIG_From_int(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_From_ptrdiff_t(long) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_From_unsigned_SS_long(unsigned long) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_From_unsigned_SS_long_SS_long(unsigned long long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromSize_t", referenced from:
      SWIG_From_unsigned_SS_int(unsigned int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromUnsignedLong", referenced from:
      SWIG_From_unsigned_SS_long(unsigned long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromUnsignedLongLong", referenced from:
      SWIG_From_unsigned_SS_long_SS_long(unsigned long long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromVoidPtr", referenced from:
      SwigPyObject_long(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyModule_AddObject", referenced from:
      SWIG_Python_SetModule(swig_module_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyModule_Create2", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyModule_GetDict", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Call", referenced from:
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_CallFunctionObjArgs", referenced from:
      SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Free", referenced from:
      SwigPyPacked_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_New(void*, unsigned long, swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_GenericGetAttr", referenced from:
      SwigPyPacked_TypeOnce()::tmp in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_TypeOnce()::tmp in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_GetAttr", referenced from:
      SWIG_Python_GetSwigThis(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_GetAttrString", referenced from:
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetSwigThis(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Init", referenced from:
      SwigPyObject_New(void*, swig_type_info*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_New(void*, unsigned long, swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_newvarlink() in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_IsInstance", referenced from:
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_IsTrue", referenced from:
      SWIG_AsVal_bool(_object*, bool*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_own(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Malloc", referenced from:
      SwigPyObject_New(void*, swig_type_info*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_New(void*, unsigned long, swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_newvarlink() in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_SetAttr", referenced from:
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::container_owner<swig::pointer_category>::back_reference(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Str", referenced from:
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PySequence_Check", referenced from:
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::word>::SwigPySequence_Cont(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::list<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >, freeling::analysis>::asptr(_object*, std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::analysis>::SwigPySequence_Cont(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >, freeling::alternative>::asptr(_object*, std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::alternative>::SwigPySequence_Cont(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySequence_GetItem", referenced from:
      swig::SwigPySequence_Cont<freeling::word>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Ref<freeling::word>::operator freeling::word() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::analysis>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Ref<freeling::analysis>::operator freeling::analysis() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::alternative>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Ref<freeling::alternative>::operator freeling::alternative() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::sentence>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySequence_Size", referenced from:
      swig::SwigPySequence_Cont<freeling::word>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::analysis>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::alternative>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::sentence>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::paragraph>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::argument>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::predicate>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySlice_GetIndices", referenced from:
      std_vector_Sl_freeling_word_Sg____delitem____SWIG_1(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_vector_Sl_freeling_word_Sg____getitem____SWIG_0(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_vector_Sl_freeling_word_Sg____setitem____SWIG_1(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_vector_Sl_freeling_word_Sg____setitem____SWIG_0(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_list_Sl_freeling_word_Sg____delitem____SWIG_1(std::__1::list<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_list_Sl_freeling_word_Sg____getitem____SWIG_0(std::__1::list<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_list_Sl_freeling_word_Sg____setitem____SWIG_1(std::__1::list<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySlice_Type", referenced from:
      _wrap_VectorWord___delitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_VectorWord___getitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_VectorWord___setitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListWord___delitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListWord___getitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListWord___setitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListAnalysis___delitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyTuple_New", referenced from:
      _wrap_SetString_equal_range(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SetString_insert(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<int, std::__1::allocator<int> >, int>::from(std::__1::list<int, std::__1::allocator<int> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > >::from(std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from<std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >::from(std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyTuple_SetItem", referenced from:
      _wrap_SetString_equal_range(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SetString_insert(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<int, std::__1::allocator<int> >, int>::from(std::__1::list<int, std::__1::allocator<int> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > >::from(std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from<std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >::from(std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >::from(std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyType_IsSubtype", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyType_Ready", referenced from:
      SwigPyPacked_TypeOnce() in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_TypeOnce() in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_type() in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyType_Type", referenced from:
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_AsUTF8String", referenced from:
      SWIG_Python_str_AsChar(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_AsWideChar", referenced from:
      SWIG_AsWCharPtrAndSize(_object*, wchar_t**, unsigned long*, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_Concat", referenced from:
      SwigPyObject_repr(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_FromFormat", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_repr(SwigPyPacked*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_str(SwigPyPacked*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_repr(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_FromString", referenced from:
      SWIG_Python_str_FromChar(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_FromWideChar", referenced from:
      SWIG_FromWCharPtrAndSize(wchar_t const*, unsigned long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_GetLength", referenced from:
      SWIG_AsWCharPtrAndSize(_object*, wchar_t**, unsigned long*, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_InternFromString", referenced from:
      swig_varlink_repr(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_Py_DecRef", referenced from:
      SwigPyObject_repr(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "__PyObject_New", referenced from:
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "__Py_NoneStruct", referenced from:
      SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Py_Void() in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::list<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >, freeling::analysis>::asptr(_object*, std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >, freeling::alternative>::asptr(_object*, std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::sentence, std::__1::allocator<freeling::sentence> >, freeling::sentence>::asptr(_object*, std::__1::list<freeling::sentence, std::__1::allocator<freeling::sentence> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "__Py_NotImplementedStruct", referenced from:
      _wrap_SwigPyIterator___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___add__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___sub__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ref__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [APIs/python3/_pyfreeling.dylib] Error 1
make[1]: *** [APIs/python3/CMakeFiles/_pyfreeling.dir/all] Error 2
make: *** [all] Error 2
lluisp commented 4 years ago

It looks as you might be missing some python development libraries (or the path to them) In linux, they are called libpython-*

arademaker commented 4 years ago

Yes, the question is how to indicate the location of the heads! Reading this question I found the path in my system. Python3 was installed with brew:

/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/include/python3.7m

The documentation has only "Make sure you install also development headers" in https://freeling-user-manual.readthedocs.io/en/v4.1/installation/apis-mac/. But how to customize the location of the heads?

There is a FREELINGDIR in the FreeLing-4.1/APIs/python3/Makefile and a ${PYTHON_INCLUDE_DIRS} in the CMakeLists.txt file. The second one is a local environment variable that I can set? Do I need to change the first one?

arademaker commented 4 years ago

I tried with a variable:

export PYTHON_INCLUDE_DIRS=/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/include/python3.7m

and with:

cmake .. -DPYTHON3_API=ON -DICU_ROOT=/usr/local/opt/icu4c -DPYTHON_INCLUDE_DIRS=/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/include/python3.7m

Both cases didn't work. The error looks the same, but in any case:

[100%] Linking CXX shared library _pyfreeling.dylib
Undefined symbols for architecture x86_64:
  "_PyArg_UnpackTuple", referenced from:
      SwigPyObject_own(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyBool_FromLong", referenced from:
      SWIG_From_bool(bool) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_richcompare(SwigPyObject*, SwigPyObject*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_own(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyBool_Type", referenced from:
      SWIG_AsVal_bool(_object*, bool*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyBytes_AsStringAndSize", referenced from:
      SWIG_Python_str_AsChar(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCFunction_NewEx", referenced from:
      SWIG_PyInstanceMethod_New(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCFunction_Type", referenced from:
      SWIG_PyInstanceMethod_New(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCapsule_GetPointer", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_DestroyModule(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCapsule_Import", referenced from:
      SWIG_Python_GetModule(void*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCapsule_New", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetModule(swig_module_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_GetItem", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_New", referenced from:
      SWIG_Python_TypeCache() in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_SetItem", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetSwigThis(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_SetItemString", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_InstallConstants(_object*, swig_const_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetConstant(_object*, char const*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_Clear", referenced from:
      _wrap_SwigPyIterator___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___add__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ref__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreeSiblingIteratorNode___ref__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyErr_Fetch", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_Format", referenced from:
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_getattr(swig_varlinkobject*, char*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_setattr(swig_varlinkobject*, char*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_GivenExceptionMatches", referenced from:
      SWIG_Python_TypeErrorOccurred(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_Occurred", referenced from:
      SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_GetSwigThis(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_AsVal_unsigned_SS_long(_object*, unsigned long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_TypeErrorOccurred(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_AsVal_long(_object*, long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_GetModule(void*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyErr_Restore", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_SetObject", referenced from:
      SWIG_Python_SetErrorObj(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_SetString", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetErrorMsg(_object*, char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_append(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyErr_WriteUnraisable", referenced from:
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_AttributeError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_getattr(swig_varlinkobject*, char*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_setattr(swig_varlinkobject*, char*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_IOError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_IndexError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_MemoryError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_OverflowError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<int, std::__1::allocator<int> >, int>::from(std::__1::list<int, std::__1::allocator<int> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > >::from(std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::from(std::__1::list<freeling::word, std::__1::allocator<freeling::word> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double>, std::__1::allocator<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double> > >, std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double> >::from(std::__1::list<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double>, std::__1::allocator<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >, freeling::alternative>::from(std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >, freeling::analysis>::from(std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyExc_RuntimeError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_ExceptionType(swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_StopIteration", referenced from:
      _wrap_SwigPyIterator_value(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator_next(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___next__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator_previous(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator_advance(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___iadd__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___isub__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyExc_SyntaxError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_SystemError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_TypeError", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_TypeErrorOccurred(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_append(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyExc_ValueError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_ZeroDivisionError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyFloat_AsDouble", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyFloat_FromDouble", referenced from:
      _wrap_PairDoubleString_first_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_PairStringDouble_second_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_analysis_get_prob(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_analysis_get_distance(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_config_options_MACO_ProbabilityThreshold_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_config_options_TAGGER_RelaxScaleFactor_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_config_options_TAGGER_RelaxEpsilon_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyFloat_Type", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyImport_AddModule", referenced from:
      SWIG_Python_SetModule(swig_module_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyInstanceMethod_New", referenced from:
      SWIG_PyInstanceMethod_New(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsDouble", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsLong", referenced from:
      SWIG_AsVal_long(_object*, long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsUnsignedLong", referenced from:
      SWIG_AsVal_unsigned_SS_long(_object*, unsigned long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsUnsignedLongLong", referenced from:
      SWIG_AsVal_unsigned_SS_long_SS_long(_object*, unsigned long long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromLong", referenced from:
      SWIG_From_int(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_From_ptrdiff_t(long) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_From_unsigned_SS_long(unsigned long) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_From_unsigned_SS_long_SS_long(unsigned long long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromSize_t", referenced from:
      SWIG_From_unsigned_SS_int(unsigned int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromUnsignedLong", referenced from:
      SWIG_From_unsigned_SS_long(unsigned long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromUnsignedLongLong", referenced from:
      SWIG_From_unsigned_SS_long_SS_long(unsigned long long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromVoidPtr", referenced from:
      SwigPyObject_long(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyModule_AddObject", referenced from:
      SWIG_Python_SetModule(swig_module_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyModule_Create2", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyModule_GetDict", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Call", referenced from:
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_CallFunctionObjArgs", referenced from:
      SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Free", referenced from:
      SwigPyPacked_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_New(void*, unsigned long, swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_GenericGetAttr", referenced from:
      SwigPyPacked_TypeOnce()::tmp in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_TypeOnce()::tmp in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_GetAttr", referenced from:
      SWIG_Python_GetSwigThis(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_GetAttrString", referenced from:
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetSwigThis(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Init", referenced from:
      SwigPyObject_New(void*, swig_type_info*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_New(void*, unsigned long, swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_newvarlink() in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_IsInstance", referenced from:
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_IsTrue", referenced from:
      SWIG_AsVal_bool(_object*, bool*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_own(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Malloc", referenced from:
      SwigPyObject_New(void*, swig_type_info*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_New(void*, unsigned long, swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_newvarlink() in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_SetAttr", referenced from:
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::container_owner<swig::pointer_category>::back_reference(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Str", referenced from:
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PySequence_Check", referenced from:
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::word>::SwigPySequence_Cont(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::list<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >, freeling::analysis>::asptr(_object*, std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::analysis>::SwigPySequence_Cont(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >, freeling::alternative>::asptr(_object*, std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::alternative>::SwigPySequence_Cont(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySequence_GetItem", referenced from:
      swig::SwigPySequence_Cont<freeling::word>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Ref<freeling::word>::operator freeling::word() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::analysis>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Ref<freeling::analysis>::operator freeling::analysis() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::alternative>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Ref<freeling::alternative>::operator freeling::alternative() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::sentence>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySequence_Size", referenced from:
      swig::SwigPySequence_Cont<freeling::word>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::analysis>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::alternative>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::sentence>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::paragraph>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::argument>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::predicate>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySlice_GetIndices", referenced from:
      std_vector_Sl_freeling_word_Sg____delitem____SWIG_1(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_vector_Sl_freeling_word_Sg____getitem____SWIG_0(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_vector_Sl_freeling_word_Sg____setitem____SWIG_1(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_vector_Sl_freeling_word_Sg____setitem____SWIG_0(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_list_Sl_freeling_word_Sg____delitem____SWIG_1(std::__1::list<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_list_Sl_freeling_word_Sg____getitem____SWIG_0(std::__1::list<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_list_Sl_freeling_word_Sg____setitem____SWIG_1(std::__1::list<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySlice_Type", referenced from:
      _wrap_VectorWord___delitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_VectorWord___getitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_VectorWord___setitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListWord___delitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListWord___getitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListWord___setitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListAnalysis___delitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyTuple_New", referenced from:
      _wrap_SetString_equal_range(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SetString_insert(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<int, std::__1::allocator<int> >, int>::from(std::__1::list<int, std::__1::allocator<int> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > >::from(std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from<std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >::from(std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyTuple_SetItem", referenced from:
      _wrap_SetString_equal_range(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SetString_insert(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<int, std::__1::allocator<int> >, int>::from(std::__1::list<int, std::__1::allocator<int> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > >::from(std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from<std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >::from(std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >::from(std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyType_IsSubtype", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyType_Ready", referenced from:
      SwigPyPacked_TypeOnce() in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_TypeOnce() in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_type() in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyType_Type", referenced from:
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_AsUTF8String", referenced from:
      SWIG_Python_str_AsChar(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_AsWideChar", referenced from:
      SWIG_AsWCharPtrAndSize(_object*, wchar_t**, unsigned long*, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_Concat", referenced from:
      SwigPyObject_repr(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_FromFormat", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_repr(SwigPyPacked*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_str(SwigPyPacked*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_repr(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_FromString", referenced from:
      SWIG_Python_str_FromChar(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_FromWideChar", referenced from:
      SWIG_FromWCharPtrAndSize(wchar_t const*, unsigned long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_GetLength", referenced from:
      SWIG_AsWCharPtrAndSize(_object*, wchar_t**, unsigned long*, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_InternFromString", referenced from:
      swig_varlink_repr(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_Py_DecRef", referenced from:
      SwigPyObject_repr(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "__PyObject_New", referenced from:
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "__Py_NoneStruct", referenced from:
      SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Py_Void() in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::list<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >, freeling::analysis>::asptr(_object*, std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >, freeling::alternative>::asptr(_object*, std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::sentence, std::__1::allocator<freeling::sentence> >, freeling::sentence>::asptr(_object*, std::__1::list<freeling::sentence, std::__1::allocator<freeling::sentence> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "__Py_NotImplementedStruct", referenced from:
      _wrap_SwigPyIterator___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___add__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___sub__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ref__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [APIs/python3/_pyfreeling.dylib] Error 1
make[1]: *** [APIs/python3/CMakeFiles/_pyfreeling.dir/all] Error 2
make: *** [all] Error 2
lluisp commented 4 years ago

It seems Cmake has changed the detection of python in newer versions In 3.10 it was detected with the command "FIND_PACKAGE(PythonLibs 3)" you'll find in APIs/python3/CMakeLists.txt

But since 3.12, it seems it is called FindPython3 https://cmake.org/cmake/help/v3.15/module/FindPython3.html#module:FindPython3

So if your cmake version is >=3.12, you need to change that line to "FIND_PACKAGE (Python3 COMPONENTS Interpreter Development)" And also adjust the name of the variables ${PYTHON_LIBRARIES} and ${PYTHON_INCLUDE_DIRS} to ${Python4_LIBRARIES} and ${Python3_INCLUDE_DIRS} respectively

arademaker commented 4 years ago

OK. I edited the APIs/python3/CMakeLists.txt that now has the following content:


FIND_PACKAGE (Python3 COMPONENTS Interpreter Development)

INCLUDE_DIRECTORIES(${Python3_INCLUDE_DIRS})

SET_PROPERTY(SOURCE freeling_pythonAPI.i PROPERTY CPLUSPLUS ON)

SET(CMAKE_SWIG_FLAGS "-py3")
SWIG_ADD_LIBRARY(pyfreeling TYPE SHARED LANGUAGE python SOURCES freeling_pythonAPI.i)

if(WIN32)
  SWIG_LINK_LIBRARIES(pyfreeling freeling ${Python3_LIBRARIES} ${Boost_LIBRARIES})
else()
  SWIG_LINK_LIBRARIES(pyfreeling freeling)
endif()

install(TARGETS _pyfreeling DESTINATION share/freeling/APIs/python3)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/pyfreeling.py ${CMAKE_CURRENT_SOURCE_DIR}/sample.py
        DESTINATION share/freeling/APIs/python3)

Note that I used Python3_LIBRARIES instead of your Python4_LIBRARIES, I didn't see references to Python4_LIBRARIES! Am I right?

What should I do with the FREELINGDIR variable in the Makefile from this same directory? Because I still have error, something changed, but I still can't compile FL 4.1 in MacOS

[100%] Linking CXX shared library _pyfreeling.dylib
cd /Users/ar/work/fl/FreeLing-4.1/build/APIs/python3 && /usr/local/Cellar/cmake/3.15.3/bin/cmake -E cmake_link_script CMakeFiles/_pyfreeling.dir/link.txt --verbose=1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.14 -dynamiclib -Wl,-headerpad_max_install_names -L/usr/local/opt/icu4c/lib -o _pyfreeling.dylib -install_name @rpath/_pyfreeling.dylib CMakeFiles/_pyfreeling.dir/CMakeFiles/_pyfreeling.dir/freeling_pythonAPIPYTHON_wrap.cxx.o  -L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,-rpath,/Users/ar/work/fl/FreeLing-4.1/build/src/libfreeling -Wl,-rpath,/Users/ar/work/fl/FreeLing-4.1/build/src/libfoma -Wl,-rpath,/Users/ar/work/fl/FreeLing-4.1/build/src/libtreeler ../../src/libfreeling/libfreeling.dylib ../../src/libfoma/libfoma.dylib ../../src/libtreeler/libtreeler.dylib /usr/lib/libz.dylib /usr/local/lib/libboost_regex.dylib /usr/local/lib/libboost_filesystem.dylib /usr/local/lib/libboost_thread-mt.dylib /usr/local/lib/libboost_program_options.dylib /usr/local/opt/icu4c/lib/libicuuc.dylib /usr/local/opt/icu4c/lib/libicui18n.dylib
Undefined symbols for architecture x86_64:
  "_PyArg_UnpackTuple", referenced from:
      SwigPyObject_own(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyBool_FromLong", referenced from:
      SWIG_From_bool(bool) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_richcompare(SwigPyObject*, SwigPyObject*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_own(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyBool_Type", referenced from:
      SWIG_AsVal_bool(_object*, bool*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyBytes_AsStringAndSize", referenced from:
      SWIG_Python_str_AsChar(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCFunction_NewEx", referenced from:
      SWIG_PyInstanceMethod_New(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCFunction_Type", referenced from:
      SWIG_PyInstanceMethod_New(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCapsule_GetPointer", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_DestroyModule(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCapsule_Import", referenced from:
      SWIG_Python_GetModule(void*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyCapsule_New", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetModule(swig_module_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_GetItem", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_New", referenced from:
      SWIG_Python_TypeCache() in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_SetItem", referenced from:
      SWIG_Python_TypeQuery(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetSwigThis(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyDict_SetItemString", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_InstallConstants(_object*, swig_const_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetConstant(_object*, char const*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_Clear", referenced from:
      _wrap_SwigPyIterator___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___add__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ref__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreeSiblingIteratorNode___ref__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyErr_Fetch", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_Format", referenced from:
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_getattr(swig_varlinkobject*, char*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_setattr(swig_varlinkobject*, char*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_GivenExceptionMatches", referenced from:
      SWIG_Python_TypeErrorOccurred(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_Occurred", referenced from:
      SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_GetSwigThis(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_AsVal_unsigned_SS_long(_object*, unsigned long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_TypeErrorOccurred(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_AsVal_long(_object*, long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_GetModule(void*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyErr_Restore", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_SetObject", referenced from:
      SWIG_Python_SetErrorObj(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyErr_SetString", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetErrorMsg(_object*, char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_append(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyErr_WriteUnraisable", referenced from:
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_AttributeError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_getattr(swig_varlinkobject*, char*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_setattr(swig_varlinkobject*, char*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_IOError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_IndexError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_MemoryError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_OverflowError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<int, std::__1::allocator<int> >, int>::from(std::__1::list<int, std::__1::allocator<int> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > >::from(std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::from(std::__1::list<freeling::word, std::__1::allocator<freeling::word> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double>, std::__1::allocator<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double> > >, std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double> >::from(std::__1::list<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double>, std::__1::allocator<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, double> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >, freeling::alternative>::from(std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >, freeling::analysis>::from(std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyExc_RuntimeError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_ExceptionType(swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_StopIteration", referenced from:
      _wrap_SwigPyIterator_value(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator_next(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___next__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator_previous(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator_advance(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___iadd__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___isub__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyExc_SyntaxError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_SystemError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_TypeError", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_UnpackTuple(_object*, char const*, long, long, _object**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_TypeErrorOccurred(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_append(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyExc_ValueError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyExc_ZeroDivisionError", referenced from:
      SWIG_Python_ErrorType(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyFloat_AsDouble", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyFloat_FromDouble", referenced from:
      _wrap_PairDoubleString_first_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_PairStringDouble_second_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_analysis_get_prob(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_analysis_get_distance(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_config_options_MACO_ProbabilityThreshold_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_config_options_TAGGER_RelaxScaleFactor_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_config_options_TAGGER_RelaxEpsilon_get(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyFloat_Type", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyImport_AddModule", referenced from:
      SWIG_Python_SetModule(swig_module_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyInstanceMethod_New", referenced from:
      SWIG_PyInstanceMethod_New(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsDouble", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsLong", referenced from:
      SWIG_AsVal_long(_object*, long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsUnsignedLong", referenced from:
      SWIG_AsVal_unsigned_SS_long(_object*, unsigned long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_AsUnsignedLongLong", referenced from:
      SWIG_AsVal_unsigned_SS_long_SS_long(_object*, unsigned long long*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromLong", referenced from:
      SWIG_From_int(int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_From_ptrdiff_t(long) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_From_unsigned_SS_long(unsigned long) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_From_unsigned_SS_long_SS_long(unsigned long long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromSize_t", referenced from:
      SWIG_From_unsigned_SS_int(unsigned int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromUnsignedLong", referenced from:
      SWIG_From_unsigned_SS_long(unsigned long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromUnsignedLongLong", referenced from:
      SWIG_From_unsigned_SS_long_SS_long(unsigned long long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyLong_FromVoidPtr", referenced from:
      SwigPyObject_long(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyModule_AddObject", referenced from:
      SWIG_Python_SetModule(swig_module_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyModule_Create2", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyModule_GetDict", referenced from:
      _PyInit__pyfreeling in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Call", referenced from:
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_CallFunctionObjArgs", referenced from:
      SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Free", referenced from:
      SwigPyPacked_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_dealloc(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_New(void*, unsigned long, swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_GenericGetAttr", referenced from:
      SwigPyPacked_TypeOnce()::tmp in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_TypeOnce()::tmp in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_GetAttr", referenced from:
      SWIG_Python_GetSwigThis(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_GetAttrString", referenced from:
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_SetSwigThis(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Init", referenced from:
      SwigPyObject_New(void*, swig_type_info*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_New(void*, unsigned long, swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_newvarlink() in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_IsInstance", referenced from:
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_IsTrue", referenced from:
      SWIG_AsVal_bool(_object*, bool*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_own(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Malloc", referenced from:
      SwigPyObject_New(void*, swig_type_info*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_New(void*, unsigned long, swig_type_info*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_newvarlink() in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_SetAttr", referenced from:
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::container_owner<swig::pointer_category>::back_reference(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyObject_Str", referenced from:
      SWIG_Python_AddErrorMsg(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PySequence_Check", referenced from:
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::word>::SwigPySequence_Cont(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::list<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >, freeling::analysis>::asptr(_object*, std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::analysis>::SwigPySequence_Cont(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >, freeling::alternative>::asptr(_object*, std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::alternative>::SwigPySequence_Cont(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySequence_GetItem", referenced from:
      swig::SwigPySequence_Cont<freeling::word>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Ref<freeling::word>::operator freeling::word() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::analysis>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Ref<freeling::analysis>::operator freeling::analysis() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::alternative>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Ref<freeling::alternative>::operator freeling::alternative() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::sentence>::check() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySequence_Size", referenced from:
      swig::SwigPySequence_Cont<freeling::word>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::analysis>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::alternative>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::sentence>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::paragraph>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::argument>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::SwigPySequence_Cont<freeling::predicate>::size() const in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySlice_GetIndices", referenced from:
      std_vector_Sl_freeling_word_Sg____delitem____SWIG_1(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_vector_Sl_freeling_word_Sg____getitem____SWIG_0(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_vector_Sl_freeling_word_Sg____setitem____SWIG_1(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_vector_Sl_freeling_word_Sg____setitem____SWIG_0(std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_list_Sl_freeling_word_Sg____delitem____SWIG_1(std::__1::list<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_list_Sl_freeling_word_Sg____getitem____SWIG_0(std::__1::list<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      std_list_Sl_freeling_word_Sg____setitem____SWIG_1(std::__1::list<freeling::word, std::__1::allocator<freeling::word> >*, PySliceObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PySlice_Type", referenced from:
      _wrap_VectorWord___delitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_VectorWord___getitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_VectorWord___setitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListWord___delitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListWord___getitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListWord___setitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_ListAnalysis___delitem__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyTuple_New", referenced from:
      _wrap_SetString_equal_range(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SetString_insert(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Python_NewShadowInstance(SwigPyClientData*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<int, std::__1::allocator<int> >, int>::from(std::__1::list<int, std::__1::allocator<int> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > >::from(std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from<std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >::from(std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyTuple_SetItem", referenced from:
      _wrap_SetString_equal_range(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SetString_insert(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<int, std::__1::allocator<int> >, int>::from(std::__1::list<int, std::__1::allocator<int> > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from_stdseq<std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > >::from(std::__1::list<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::allocator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from<std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >::from(std::__1::pair<double, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_from<std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >::from(std::__1::pair<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > const&) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "_PyType_IsSubtype", referenced from:
      SWIG_AsVal_double(_object*, double*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyType_Ready", referenced from:
      SwigPyPacked_TypeOnce() in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_TypeOnce() in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_type() in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyType_Type", referenced from:
      SwigPyClientData_New(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_AsUTF8String", referenced from:
      SWIG_Python_str_AsChar(_object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_AsWideChar", referenced from:
      SWIG_AsWCharPtrAndSize(_object*, wchar_t**, unsigned long*, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_Concat", referenced from:
      SwigPyObject_repr(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_FromFormat", referenced from:
      SWIG_Python_RaiseOrModifyTypeError(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_repr(SwigPyPacked*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyPacked_str(SwigPyPacked*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SwigPyObject_repr(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_FromString", referenced from:
      SWIG_Python_str_FromChar(char const*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_FromWideChar", referenced from:
      SWIG_FromWCharPtrAndSize(wchar_t const*, unsigned long) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_GetLength", referenced from:
      SWIG_AsWCharPtrAndSize(_object*, wchar_t**, unsigned long*, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_PyUnicode_InternFromString", referenced from:
      swig_varlink_repr(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "_Py_DecRef", referenced from:
      SwigPyObject_repr(SwigPyObject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig_varlink_str(swig_varlinkobject*) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "__PyObject_New", referenced from:
      SWIG_Python_NewPointerObj(_object*, void*, swig_type_info*, int) in freeling_pythonAPIPYTHON_wrap.cxx.o
  "__Py_NoneStruct", referenced from:
      SWIG_Python_ConvertPtrAndOwn(_object*, void**, swig_type_info*, int, int*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      SWIG_Py_Void() in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::vector<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::word, std::__1::allocator<freeling::word> >, freeling::word>::asptr(_object*, std::__1::list<freeling::word, std::__1::allocator<freeling::word> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >, freeling::analysis>::asptr(_object*, std::__1::list<freeling::analysis, std::__1::allocator<freeling::analysis> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >, freeling::alternative>::asptr(_object*, std::__1::list<freeling::alternative, std::__1::allocator<freeling::alternative> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      swig::traits_asptr_stdseq<std::__1::list<freeling::sentence, std::__1::allocator<freeling::sentence> >, freeling::sentence>::asptr(_object*, std::__1::list<freeling::sentence, std::__1::allocator<freeling::sentence> >**) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
  "__Py_NotImplementedStruct", referenced from:
      _wrap_SwigPyIterator___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___add__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_SwigPyIterator___sub__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___eq__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ne__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      _wrap_TreePreorderIteratorNode___ref__(_object*, _object*) in freeling_pythonAPIPYTHON_wrap.cxx.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [APIs/python3/_pyfreeling.dylib] Error 1
make[1]: *** [APIs/python3/CMakeFiles/_pyfreeling.dir/all] Error 2
make: *** [all] Error 2
lluisp commented 4 years ago

"python4" was a typo, it should be "python3"

Using 'cmake -DPYTHON3_API=ON' is the recommended way of building the API

Alternatively, you can run cmake without option -DPYTHON3_API=ON, and manually create the API with the Makefile: That is, you install FreeLing without API using cmake, make, and make install. Then you run the Makefile setting FREELINGDIR to the directroy where you installed FreeLing (/usr/local by default)

However, this is a plan B using outdated code. The best way is to use cmake to locate python and generate the API with -DPYTHON3_API=ON

Note that when you modify any CMakeLists.txt file, you have to clean your build directory (rm -rf *), and run cmake again, so it searches for dependencies again, and re-generates the makefiles. Then, you run make, which will use the newly generated makefiles.

If cmake has some problem finding python, it should report an error (in that case, there is no point in running make)

arademaker commented 4 years ago

Yes, I prefer plan A. Yes, I have cleaned up the build directory before all my commands above. This is the output of cmake:

$ rm -rf *
$ cmake .. -DPYTHON3_API=ON -DICU_ROOT=/usr/local/opt/icu4c
-- The C compiler identification is AppleClang 11.0.0.11000033
-- The CXX compiler identification is AppleClang 11.0.0.11000033
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found ZLIB: /usr/lib/libz.dylib (found version "1.2.11")
CMake Warning at /usr/local/lib/cmake/boost_regex-1.71.0/libboost_regex-variant-shared.cmake:59 (message):
  Target Boost::regex already has an imported location
  '/usr/local/lib/libboost_regex-mt.dylib', which will be overwritten with
  '/usr/local/lib/libboost_regex.dylib'
Call Stack (most recent call first):
  /usr/local/lib/cmake/boost_regex-1.71.0/boost_regex-config.cmake:43 (include)
  /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package)
  /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:182 (boost_find_component)
  /usr/local/Cellar/cmake/3.15.3/share/cmake/Modules/FindBoost.cmake:443 (find_package)
  CMakeLists.txt:43 (find_package)

CMake Warning at /usr/local/lib/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake:59 (message):
  Target Boost::filesystem already has an imported location
  '/usr/local/lib/libboost_filesystem-mt.dylib', which will be overwritten
  with '/usr/local/lib/libboost_filesystem.dylib'
Call Stack (most recent call first):
  /usr/local/lib/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake:43 (include)
  /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package)
  /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:182 (boost_find_component)
  /usr/local/Cellar/cmake/3.15.3/share/cmake/Modules/FindBoost.cmake:443 (find_package)
  CMakeLists.txt:43 (find_package)

CMake Warning at /usr/local/lib/cmake/boost_program_options-1.71.0/libboost_program_options-variant-shared.cmake:59 (message):
  Target Boost::program_options already has an imported location
  '/usr/local/lib/libboost_program_options-mt.dylib', which will be
  overwritten with '/usr/local/lib/libboost_program_options.dylib'
Call Stack (most recent call first):
  /usr/local/lib/cmake/boost_program_options-1.71.0/boost_program_options-config.cmake:43 (include)
  /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package)
  /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:182 (boost_find_component)
  /usr/local/Cellar/cmake/3.15.3/share/cmake/Modules/FindBoost.cmake:443 (find_package)
  CMakeLists.txt:43 (find_package)

-- Found Boost: /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components:  regex filesystem thread program_options
CMake Warning (dev) at CMakeLists.txt:51 (find_package):
  Policy CMP0074 is not set: find_package uses <PackageName>_ROOT variables.
  Run "cmake --help-policy CMP0074" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  CMake variable ICU_ROOT is set to:

    /usr/local/opt/icu4c

  For compatibility, CMake is ignoring the variable.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found the following ICU libraries:
--   data (required)
--   i18n (required)
--   uc (required)
-- Found ICU: /usr/local/opt/icu4c/include (found version "64.2")
-- Found Threads: TRUE
-- Found SWIG: /usr/local/bin/swig (found version "4.0.1")
-- Found Python3: /usr/local/Frameworks/Python.framework/Versions/3.7/bin/python3.7 (found version "3.7.4") found components:  Interpreter Development
CMake Warning (dev) at /usr/local/Cellar/cmake/3.15.3/share/cmake/Modules/UseSWIG.cmake:607 (message):
  Policy CMP0078 is not set: UseSWIG generates standard target names.  Run
  "cmake --help-policy CMP0078" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

Call Stack (most recent call first):
  APIs/python3/CMakeLists.txt:9 (SWIG_ADD_LIBRARY)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /usr/local/Cellar/cmake/3.15.3/share/cmake/Modules/UseSWIG.cmake:460 (message):
  Policy CMP0086 is not set: UseSWIG honors SWIG_MODULE_NAME via -module
  flag.  Run "cmake --help-policy CMP0086" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.15.3/share/cmake/Modules/UseSWIG.cmake:702 (SWIG_ADD_SOURCE_TO_MODULE)
  APIs/python3/CMakeLists.txt:9 (SWIG_ADD_LIBRARY)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring done
-- Generating done
-- Build files have been written to: /Users/ar/work/fl/FreeLing-4.1/build

But I am still getting the error reported in the last comment.

lluisp commented 4 years ago

All these warnings in cmake make me think that the problem is in how newer cmake locates libraries. So, cmake configuration files should be adapted to work on newer versions, which may be quite a struggle

Try adding the line

cmake_policy(VERSION 3.10)

at the beggining of CMakeLists.txt in the main directory (and after --or maybe instead of-- cmake_minimum_required command)

Another thing you can try (instead of, or in addition to the previous one) is replacing in APIs/python3/CMakeLists.txt, the lines

if(WIN32)
  SWIG_LINK_LIBRARIES(pyfreeling freeling ${PYTHON_LIBRARIES} ${Boost_LIBRARIES})
else()
  SWIG_LINK_LIBRARIES(pyfreeling freeling)
endif()

with simply

SWIG_LINK_LIBRARIES(pyfreeling freeling ${PYTHON_LIBRARIES} ${Boost_LIBRARIES})

If that does not work, maybe downgrading to a cmake version previous to 3.12 would...

arademaker commented 4 years ago

None of the alternatives above worked! :-( Let us see if it is possible, https://stackoverflow.com/questions/58148541/how-to-install-cmake-version-3-12-using-homebrew.

bazzmx commented 4 years ago

You won't be able to downgrade cmake if you have the latest macos, an alternative would be to install freeling using brew (which will install with no problems) and then compiling the apis by hand, but I don't know how to do that.

I'm having a similar problem:

`[ 6%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/io.cc.o cd /Users/ndr235/FreeLing/build/src/libdynet/dynet && /Library/Developer/CommandLineTools/usr/bin/c++ -DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB -DPACKAGE_STRING="\"FreeLing 4.1\"" -DVERSION=4.1 -Ddynet_EXPORTS -I/Users/ndr235/FreeLing/src/include -I/Users/ndr235/FreeLing/src/libdynet -I/Users/ndr235/FreeLing/src/libdynet/external/easyloggingpp/src -I/Users/ndr235/FreeLing/src/eigen3 -I/Users/ndr235/FreeLing/build/src/libdynet -DEIGEN_FAST_MATH -fPIC -fno-finite-math-only -Wall -Wno-missing-braces -std=c++11 -g -funroll-loops -Ofast -march=native -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -fPIC -std=gnu++11 -o CMakeFiles/dynet.dir/io.cc.o -c /Users/ndr235/FreeLing/src/libdynet/dynet/io.cc /Users/ndr235/FreeLing/src/libdynet/dynet/io.cc:7:10: fatal error: 'boost/iostreams/filtering_streambuf.hpp' file not found

include <boost/iostreams/filtering_streambuf.hpp>

     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1 error generated. make[2]: [src/libdynet/dynet/CMakeFiles/dynet.dir/io.cc.o] Error 1 make[1]: [src/libdynet/dynet/CMakeFiles/dynet.dir/all] Error 2 make: *** [all] Error 2 `

bazzmx commented 4 years ago

So, I was able to install freeling using homebrew, but when compiling the python API (using my anaconda base env) I get the following error:

`Battlecruiser:python3 nd235$ make g++ -dynamiclib -o _freeling.so freeling_pythonAPI.cxx -lboost_system -lpython3.6 -lfreeling -I/usr/local/Cellar/freeling/4.1_3/include -L/usr/local/Cellar/freeling/4.1_3/lib -I/Users/ndr235/anaconda3/include/python3.6m -I/usr/local/opt/icu4c/include -L/usr/local/opt/icu4c/lib -fPIC -std=c++0x In file included from freeling_pythonAPI.cxx:2944: In file included from /usr/local/Cellar/freeling/4.1_3/include/freeling.h:50: In file included from /usr/local/Cellar/freeling/4.1_3/include/freeling/morfo/dep_treeler.h:49: In file included from /usr/local/Cellar/freeling/4.1_3/include/treeler/dep/dependency_parser.h:42: In file included from /usr/local/Cellar/freeling/4.1_3/include/treeler/control/models.h:50: In file included from /usr/local/Cellar/freeling/4.1_3/include/treeler/tag/tag.h:43: In file included from /usr/local/Cellar/freeling/4.1_3/include/treeler/tag/fgen-tag.h:9: In file included from /usr/local/Cellar/freeling/4.1_3/include/treeler/base/feature-vector.h:42: In file included from /usr/local/Cellar/freeling/4.1_3/include/treeler/base/fidx.h:41: /usr/local/Cellar/freeling/4.1_3/include/treeler/base/feature-idx-v0.h:71:7: warning: 'register' storage class specifier is deprecated and incompatible with C++17 [-Wdeprecated-register] register uint32_t a = (uint32_t)(t & 0xffffffff); ^~~~~ /usr/local/Cellar/freeling/4.1_3/include/treeler/base/feature-idx-v0.h:73:7: warning: 'register' storage class specifier is deprecated and incompatible with C++17 [-Wdeprecated-register] register uint32_t b = (uint32_t)((t >> 32) & 0xffffffff); ^~~~~ /usr/local/Cellar/freeling/4.1_3/include/treeler/base/feature-idx-v0.h:75:7: warning: 'register' storage class specifier is deprecated and incompatible with C++17 [-Wdeprecated-register] register uint32_t c = 0; ^~~~~ freeling_pythonAPI.cxx:7642:22: error: no member named 'analyzer_config' in namespace 'freeling' typedef freeling::analyzer_config::config_options config_options;


freeling_pythonAPI.cxx:7643:22: error: no member named 'analyzer_config' in namespace 'freeling'
   typedef freeling::analyzer_config::invoke_options invoke_options;
           ~~~~~~~~~~^
freeling_pythonAPI.cxx:7644:22: error: no member named 'analyzer_config' in namespace 'freeling'
   typedef freeling::analyzer_config::status status;
           ~~~~~~~~~~^
freeling_pythonAPI.cxx:76253:19: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  if (arg1) (arg1)->Lang = *arg2;
            ~~~~~~^ ~~~~
freeling_pythonAPI.cxx:76278:38: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  result = (std::wstring *) & ((arg1)->Lang);
                               ~~~~~~^ ~~~~
freeling_pythonAPI.cxx:76312:19: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  if (arg1) (arg1)->TOK_TokenizerFile = *arg2;
            ~~~~~~^ ~~~~~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76337:38: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  result = (std::wstring *) & ((arg1)->TOK_TokenizerFile);
                               ~~~~~~^ ~~~~~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76371:19: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  if (arg1) (arg1)->SPLIT_SplitterFile = *arg2;
            ~~~~~~^ ~~~~~~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76396:38: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  result = (std::wstring *) & ((arg1)->SPLIT_SplitterFile);
                               ~~~~~~^ ~~~~~~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76430:19: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  if (arg1) (arg1)->MACO_Decimal = *arg2;
            ~~~~~~^ ~~~~~~~~~~~~
freeling_pythonAPI.cxx:76455:38: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  result = (std::wstring *) & ((arg1)->MACO_Decimal);
                               ~~~~~~^ ~~~~~~~~~~~~
freeling_pythonAPI.cxx:76489:19: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  if (arg1) (arg1)->MACO_Thousand = *arg2;
            ~~~~~~^ ~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76514:38: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  result = (std::wstring *) & ((arg1)->MACO_Thousand);
                               ~~~~~~^ ~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76548:19: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  if (arg1) (arg1)->MACO_UserMapFile = *arg2;
            ~~~~~~^ ~~~~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76573:38: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  result = (std::wstring *) & ((arg1)->MACO_UserMapFile);
                               ~~~~~~^ ~~~~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76607:19: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  if (arg1) (arg1)->MACO_LocutionsFile = *arg2;
            ~~~~~~^ ~~~~~~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76632:38: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  result = (std::wstring *) & ((arg1)->MACO_LocutionsFile);
                               ~~~~~~^ ~~~~~~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76666:19: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  if (arg1) (arg1)->MACO_QuantitiesFile = *arg2;
            ~~~~~~^ ~~~~~~~~~~~~~~~~~~~
freeling_pythonAPI.cxx:76691:38: error: member reference base type 'freeling::config_options' (aka 'int') is not a structure or union
  result = (std::wstring *) & ((arg1)->MACO_QuantitiesFile);
                               ~~~~~~^ ~~~~~~~~~~~~~~~~~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
3 warnings and 20 errors generated.
make: *** [_pyfreeling.so] Error 1`
lluisp commented 4 years ago

You are trying to compile the API in the latest development version, but APIs are only guaranteed to be updated on released stable versions. In development versions they usually lag behind changes in the code (since FreeLing is a C++ project, develepment efforts are focused on C++ functionalities. APIs are updated once in a while, and when a stable release is produced).

You should use code from 4.1 branch or package

bazzmx commented 4 years ago

Back at square one, I can't install because I get the same error:

Scanning dependencies of target dynet [ 1%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/aligned-mem-pool.cc.o [ 1%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/cfsm-builder.cc.o [ 1%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/deep-lstm.cc.o [ 2%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/devices.cc.o [ 2%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/dict.cc.o [ 2%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/dim.cc.o [ 3%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/dynet.cc.o [ 3%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/exec.cc.o [ 3%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/expr.cc.o [ 3%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/fast-lstm.cc.o [ 4%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/globals.cc.o [ 4%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/grad-check.cc.o [ 4%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/graph.cc.o [ 5%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/gru.cc.o [ 5%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/hsm-builder.cc.o [ 5%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/init.cc.o [ 6%] Building CXX object src/libdynet/dynet/CMakeFiles/dynet.dir/io.cc.o /Users/ndr235/FreeLing/src/libdynet/dynet/io.cc:7:10: fatal error: 'boost/iostreams/filtering_streambuf.hpp' file not found

include <boost/iostreams/filtering_streambuf.hpp>

     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1 error generated. make[2]: [src/libdynet/dynet/CMakeFiles/dynet.dir/io.cc.o] Error 1 make[1]: [src/libdynet/dynet/CMakeFiles/dynet.dir/all] Error 2 make: *** [all] Error 2

But I've checked my boost installation and it seems to be fine:

/usr/local/Cellar/boost/1.71.0/include/boost/iostreams

drwxr-xr-x 46 nd235 staff 1472 14 ago 14:29 detail drwxr-xr-x 8 nd235 staff 256 14 ago 14:29 device drwxr-xr-x 16 nd235 staff 512 14 ago 14:29 filter -rw-r--r-- 1 nd235 staff 6970 14 ago 14:29 filtering_stream.hpp -rw-r--r-- 1 nd235 staff 3081 14 ago 14:29 filtering_streambuf.hpp <-- this guy here -rw-r--r-- 1 nd235 staff 3205 14 ago 14:29 flush.hpp -rw-r--r-- 1 nd235 staff 545 14 ago 14:29 get.hpp

Otherwise, the cmake process works ok

lluisp commented 4 years ago

if the file is there and the compiler does not find it, that means the compiler is missing some include path.

run "make VERBOSE=1" and you'll see which compilation command is being used, and which include paths are set.

Also, when you run cmake on a clean build directory, check whether it is finding boost, and where (you may have more than one boost version installed, and maybe it is finding the wrong one)

bazzmx commented 4 years ago

Yes it seems that there's a problem with boost installations

$ rm -rf * $ cmake .. -DPYTHON3_API=ON -DICU_ROOT=/usr/local/opt/icu4c -- The C compiler identification is AppleClang 11.0.0.11000020 -- The CXX compiler identification is AppleClang 11.0.0.11000020 -- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc -- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ -- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found ZLIB: /usr/lib/libz.dylib (found version "1.2.11") CMake Warning at /usr/local/lib/cmake/boost_regex-1.71.0/libboost_regex-variant-shared.cmake:59 (message): Target Boost::regex already has an imported location '/usr/local/lib/libboost_regex-mt.dylib', which will be overwritten with '/usr/local/lib/libboost_regex.dylib' Call Stack (most recent call first): /usr/local/lib/cmake/boost_regex-1.71.0/boost_regex-config.cmake:43 (include) /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package) /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:182 (boost_find_component) /usr/local/Cellar/cmake/3.15.4/share/cmake/Modules/FindBoost.cmake:443 (find_package) CMakeLists.txt:43 (find_package)

CMake Warning at /usr/local/lib/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake:59 (message): Target Boost::filesystem already has an imported location '/usr/local/lib/libboost_filesystem-mt.dylib', which will be overwritten with '/usr/local/lib/libboost_filesystem.dylib' Call Stack (most recent call first): /usr/local/lib/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake:43 (include) /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package) /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:182 (boost_find_component) /usr/local/Cellar/cmake/3.15.4/share/cmake/Modules/FindBoost.cmake:443 (find_package) CMakeLists.txt:43 (find_package)

CMake Warning at /usr/local/lib/cmake/boost_program_options-1.71.0/libboost_program_options-variant-shared.cmake:59 (message): Target Boost::program_options already has an imported location '/usr/local/lib/libboost_program_options-mt.dylib', which will be overwritten with '/usr/local/lib/libboost_program_options.dylib' Call Stack (most recent call first): /usr/local/lib/cmake/boost_program_options-1.71.0/boost_program_options-config.cmake:43 (include) /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package) /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:182 (boost_find_component) /usr/local/Cellar/cmake/3.15.4/share/cmake/Modules/FindBoost.cmake:443 (find_package) CMakeLists.txt:43 (find_package)

CMake Warning at /usr/local/lib/cmake/boost_iostreams-1.71.0/libboost_iostreams-variant-shared.cmake:59 (message): Target Boost::iostreams already has an imported location '/usr/local/lib/libboost_iostreams-mt.dylib', which will be overwritten with '/usr/local/lib/libboost_iostreams.dylib' Call Stack (most recent call first): /usr/local/lib/cmake/boost_iostreams-1.71.0/boost_iostreams-config.cmake:43 (include) /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package) /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake:182 (boost_find_component) /usr/local/Cellar/cmake/3.15.4/share/cmake/Modules/FindBoost.cmake:443 (find_package) CMakeLists.txt:43 (find_package)

-- Found Boost: /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: regex filesystem thread program_options iostreams CMake Warning (dev) at CMakeLists.txt:51 (find_package): Policy CMP0074 is not set: find_package uses _ROOT variables. Run "cmake --help-policy CMP0074" for policy details. Use the cmake_policy command to set the policy and suppress this warning.

CMake variable ICU_ROOT is set to:

/usr/local/opt/icu4c

For compatibility, CMake is ignoring the variable. This warning is for project developers. Use -Wno-dev to suppress it.

-- Found the following ICU libraries: -- data (required) -- i18n (required) -- uc (required) -- Found ICU: /usr/local/opt/icu4c/include (found version "64.2") -- Found Threads: TRUE
-- BACKEND not specified, defaulting to eigen. -- Eigen dir is /Users/ndr235/FreeLing/src/eigen3 -- Found SWIG: /usr/local/bin/swig (found version "4.0.1") -- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) (Required is at least version "3") CMake Warning (dev) at /usr/local/Cellar/cmake/3.15.4/share/cmake/Modules/UseSWIG.cmake:607 (message): Policy CMP0078 is not set: UseSWIG generates standard target names. Run "cmake --help-policy CMP0078" for policy details. Use the cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first): APIs/python3/CMakeLists.txt:9 (SWIG_ADD_LIBRARY) This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at /usr/local/Cellar/cmake/3.15.4/share/cmake/Modules/UseSWIG.cmake:460 (message): Policy CMP0086 is not set: UseSWIG honors SWIG_MODULE_NAME via -module flag. Run "cmake --help-policy CMP0086" for policy details. Use the cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first): /usr/local/Cellar/cmake/3.15.4/share/cmake/Modules/UseSWIG.cmake:702 (SWIG_ADD_SOURCE_TO_MODULE) APIs/python3/CMakeLists.txt:9 (SWIG_ADD_LIBRARY) This warning is for project developers. Use -Wno-dev to suppress it.

-- Configuring done -- Generating done -- Build files have been written to: /Users/ndr235/FreeLing/build

lluisp commented 4 years ago

Good, now you know where the problem is. Check how to properly install boost (did you install from source?) and make sure you have only one version.

the purpose of CMake is making sure everything is all right before building FreeLing. If CMake fails or produces errors, there is no point in going on.

For instance, it complains about missing python libraries. No wonder building the python API fails.

arademaker commented 4 years ago

I don't know the current status of this issue. But I tried again with the branch 4.1 (HEAD of the branch) and

% cmake .. -DPYTHON3_API=ON -DICU_ROOT=/usr/local/opt/icu4c
% make
...
[ 91%] Linking CXX shared library libfreeling.dylib
Undefined symbols for architecture x86_64:
  "icu_64::Collator::createInstance(icu_64::Locale const&, UErrorCode&)", referenced from:
      boost::re_detail_107200::icu_regex_traits_implementation::icu_regex_traits_implementation(icu_64::Locale const&) in regexp.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/libfreeling/libfreeling.dylib] Error 1
make[1]: *** [src/libfreeling/CMakeFiles/freeling.dir/all] Error 2
make: *** [all] Error 2

I have Python3 and according to https://stackoverflow.com/questions/32578106/how-to-install-python-devel-in-mac-os, this is enough. Is it right? For boost:

% brew info boost
boost: stable 1.72.0 (bottled), HEAD
Collection of portable C++ source libraries
https://www.boost.org/
/usr/local/Cellar/boost/1.72.0 (14,466 files, 648.6MB) *
  Poured from bottle on 2019-12-30 at 23:16:39
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/boost.rb
==> Dependencies
Required: icu4c ✔
==> Options
--HEAD
    Install HEAD version
==> Analytics
install: 40,018 (30 days), 122,402 (90 days), 566,617 (365 days)
install-on-request: 14,261 (30 days), 43,085 (90 days), 195,352 (365 days)
build-error: 0 (30 days)
lluisp commented 4 years ago

the problem does not seem related to python headers, but to boost and icu libraries... It may be a version problem... Which versions are you using? Could you try downgrading to older versions?

jgsogo commented 4 years ago

Hi! I've been playing a bit with this library and I'm able to compile it using Macos 10.15.3 (clang 11), with boost-1.72.0 and different versions of ICU (64.2, 65.1 and 66.1). Using dynamic linking for freeling libraries (static fails for me #96). With other versions of boost it should work too.

I'm compiling ICU and Boost from sources using Conan, and I'm preparing a recipe for Freeling 4.1 too. It will take some time to arrive in ConanCenter, I need another PR to be accepted first (adding ICU to Boost). @arademaker, you can follow these steps to get ICU and boost (using Conan and eventually my fork of conan-center-index):

Easiest way to use Conan generated binaries with Freeling:

(I wrote the previous steps from the top of my head, if they fail let me know and I'll go step by step to reproduce the process)

I'm working on a Conan recipe to install Freeling, it works so far (it is the branch freeling in my fork of ConanCenter), but don't have yet recipes available for Swig and Python so I cannot build the APIs using Conan dependencies... I hope in the near future we'll manage to provide it.


@lluisp if you think I can help with the build system and the dependencies (I see there are some embedded into this repo) let me know. The best for me would be to help here while I work on the Conan recipe, I'd try to get rid of embedded third-parties (eigen, foma, dynet, CRFsuite) to make them external dependencies... But I don't know if you have any idea in mind, I can't see any issue about it.

lluisp commented 4 years ago

That sounds great! I'd prefer to have dependencies included, since:

About conan, it sounds nice, but again, I prefer to keep it simple for non-expert users. My ideal scenario would be that you could fix CMakefile.txt files to work well in MacOS. In this way, I can create binary files for Mac, or any Mac user can compile it natively.

thanks!

jgsogo commented 4 years ago

Ok, let's go step by step. I'll start with easy PRs improving the CMake files so everything works smoothly. We can talk about dependency management in the future 😉 Do you want me to open an issue first or with the PR is enough?


Sorry for the noise in this thread not related to the initial topic

lluisp commented 4 years ago

PR will be enough, thanks!

On 7/4/20 13:46, Javier G. Sogo wrote:

Ok, let's go step by step. I'll start with easy PRs improving the CMake files so everything works smoothly. We can talk about dependency management in the future 😉 Do you want me to open an issue first or with the PR is enough?


Sorry for the noise in this thread not related to the initial topic

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/TALP-UPC/FreeLing/issues/90#issuecomment-610339717, or unsubscribe https://github.com/notifications/unsubscribe-auth/AANH567IGH7JT3ZAUJF4R7DRLMHCFANCNFSM4IZEQWAA.