diff --git a/CMakeLists.txt b/CMakeLists.txt index 9fae0d552e5dcce700ae3268a4d956ed189ea9ef..052f90c27d24585a9ec2af13557024577fc738cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,4 +63,5 @@ add_subdirectory(libpwrutils) add_subdirectory(libcorpus2) add_subdirectory(tagset-tool) add_subdirectory(tests) +add_subdirectory(swig) diff --git a/CMakeScripts/FindCorpus2.cmake b/CMakeScripts/FindCorpus2.cmake new file mode 100644 index 0000000000000000000000000000000000000000..da710906b8c363ba5f23e3fd1e96408cb5ad38b6 --- /dev/null +++ b/CMakeScripts/FindCorpus2.cmake @@ -0,0 +1,49 @@ +IF (Corpus2_INCLUDE_DIR AND Corpus2_LIBRARY) +#Already in cache + SET(Corpus2_FOUND TRUE) +ELSE (Corpus2_INCLUDE_DIR AND Corpus2_LIBRARY) + FIND_PATH(Corpus2_INCLUDE_DIR libcorpus2/token.h /usr/include /usr/local/include) + + FIND_LIBRARY(Corpus2_LIBRARY corpus2 /usr/lib /usr/local/lib) + + MARK_AS_ADVANCED(Corpus2_LIBRARY) + MARK_AS_ADVANCED(Corpus2_INCLUDE_DIR) + + IF (Corpus2_INCLUDE_DIR AND Corpus2_LIBRARY) + SET(Corpus2_FOUND TRUE) + ENDIF (Corpus2_INCLUDE_DIR AND Corpus2_LIBRARY) + +ENDIF (Corpus2_INCLUDE_DIR AND Corpus2_LIBRARY) + + +IF (Corpus2_FOUND) + set(Corpus2_VERSION 0.0.0) + FIND_FILE(_Corpus2_VERSION_FILE libcorpus2/version.h ${Corpus2_INCLUDE_DIR}) + MARK_AS_ADVANCED(_Corpus2_VERSION_FILE) + IF (_Corpus2_VERSION_FILE) + FILE(READ ${_Corpus2_VERSION_FILE} _Corpus2_VERSION_CONENTS) + STRING(REGEX REPLACE ".*#define LIBCORPUS2_VERSION \\\"([0-9.]+)\\\".*" "\\1" Corpus2_VERSION "${_Corpus2_VERSION_CONENTS}") + ENDIF (_Corpus2_VERSION_FILE) + IF (Corpus2_FIND_VERSION) + IF (Corpus2_VERSION VERSION_LESS Corpus2_FIND_VERSION) + IF (Corpus2_FIND_REQUIRED) + MESSAGE(${_Corpus2_VERSION_FILE}) + MESSAGE(FATAL_ERROR "Corpus2 version too old: ${Corpus2_VERSION}, requested >= ${Corpus2_FIND_VERSION}") + ELSE (Corpus2_FIND_REQUIRED) + IF (NOT Corpus2_FIND_QUIETLY) + MESSAGE(STATUS "Corpus2 version too old: ${Corpus2_VERSION}, requested >= ${Corpus2_FIND_VERSION}") + ENDIF (NOT Corpus2_FIND_QUIETLY) + ENDIF (Corpus2_FIND_REQUIRED) + set(Corpus2_FOUND False) + ENDIF (Corpus2_VERSION VERSION_LESS Corpus2_FIND_VERSION) + ENDIF (Corpus2_FIND_VERSION) + IF (NOT Corpus2_FIND_QUIETLY) + MESSAGE(STATUS "Found libcorpus2 ${Corpus2_VERSION}: ${Corpus2_LIBRARY}") + ENDIF (NOT Corpus2_FIND_QUIETLY) +ELSE (Corpus2_FOUND) + IF (Corpus2_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find libcorpus2") + ELSE (Corpus2_FIND_REQUIRED) + MESSAGE(STATUS "libcorpus2 not found") + ENDIF (Corpus2_FIND_REQUIRED) +ENDIF (Corpus2_FOUND) diff --git a/CMakeScripts/FindPwrUtils.cmake b/CMakeScripts/FindPwrUtils.cmake new file mode 100644 index 0000000000000000000000000000000000000000..858e922e5d0fb3daa4c0ba699a9674b42b9f9a38 --- /dev/null +++ b/CMakeScripts/FindPwrUtils.cmake @@ -0,0 +1,49 @@ +IF (PwrUtils_INCLUDE_DIR AND PwrUtils_LIBRARY) +#already in cache + SET(PwrUtils_FOUND TRUE) +ELSE (PwrUtils_INCLUDE_DIR AND PwrUtils_LIBRARY) + + FIND_PATH(PwrUtils_INCLUDE_DIR libpwrutils/foreach.h /usr/include /usr/local/include ) + + FIND_LIBRARY(PwrUtils_LIBRARY pwrutils /usr/lib /usr/local/lib) + + MARK_AS_ADVANCED(PwrUtils_LIBRARY) + MARK_AS_ADVANCED(PwrUtils_INCLUDE_DIR) + + IF (PwrUtils_INCLUDE_DIR AND PwrUtils_LIBRARY) + SET(PwrUtils_FOUND TRUE) + ENDIF (PwrUtils_INCLUDE_DIR AND PwrUtils_LIBRARY) +ENDIF (PwrUtils_INCLUDE_DIR AND PwrUtils_LIBRARY) + + +IF (PwrUtils_FOUND) + set(PwrUtils_VERSION 0.0.0) + FIND_FILE(_PwrUtils_VERSION_FILE libpwrutils/version.h ${PwrUtils_INCLUDE_DIR}) + MARK_AS_ADVANCED(_PwrUtils_VERSION_FILE) + IF (_PwrUtils_VERSION_FILE) + FILE(READ ${_PwrUtils_VERSION_FILE} _PwrUtils_VERSION_CONENTS) + STRING(REGEX REPLACE ".*#define LIBPWRUTILS_VERSION \\\"([0-9.]+)\\\".*" "\\1" PwrUtils_VERSION "${_PwrUtils_VERSION_CONENTS}") + ENDIF (_PwrUtils_VERSION_FILE) + IF (PwrUtils_FIND_VERSION) + IF (PwrUtils_VERSION VERSION_LESS PwrUtils_FIND_VERSION) + IF (PwrUtils_FIND_REQUIRED) + MESSAGE(${_PwrUtils_VERSION_FILE}) + MESSAGE(FATAL_ERROR "PwrUtils version too old: ${PwrUtils_VERSION}, requested >= ${PwrUtils_FIND_VERSION}") + ELSE (PwrUtils_FIND_REQUIRED) + IF (NOT PwrUtils_FIND_QUIETLY) + MESSAGE(STATUS "PwrUtils version too old: ${PwrUtils_VERSION}, requested >= ${PwrUtils_FIND_VERSION}") + ENDIF (NOT PwrUtils_FIND_QUIETLY) + ENDIF (PwrUtils_FIND_REQUIRED) + set(PwrUtils_FOUND False) + ENDIF (PwrUtils_VERSION VERSION_LESS PwrUtils_FIND_VERSION) + ENDIF (PwrUtils_FIND_VERSION) + IF (NOT PwrUtils_FIND_QUIETLY) + MESSAGE(STATUS "Found libpwrutils ${PwrUtils_VERSION}: ${PwrUtils_LIBRARY}") + ENDIF (NOT PwrUtils_FIND_QUIETLY) +ELSE (PwrUtils_FOUND) + IF (PwrUtils_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find libpwrutils") + ELSE (PwrUtils_FIND_REQUIRED) + MESSAGE(STATUS "libpwrutils not found") + ENDIF (PwrUtils_FIND_REQUIRED) +ENDIF (PwrUtils_FOUND) diff --git a/swig/CMakeLists.txt b/swig/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..792a5bcfd475a18a1bd616dbfbb25bcfe21dccce --- /dev/null +++ b/swig/CMakeLists.txt @@ -0,0 +1,236 @@ +########## corpus2 wrappers -- SWIG ############### + +PROJECT(corpus2SwigWrap) + +find_package(Corpus2 1.0.8 REQUIRED) +set(CORPUS2_LIBS ${Corpus2_LIBRARY}) + +find_package(PwrUtils 1.0.1 REQUIRED) +set(PWRUTILS_LIBS ${PwrUtils_LIBRARY}) +set(CORPUS2_PWR_LIBS ${CORPUS2_LIBS} ${PWRUTILS_LIBS}) + +include_directories (${Libcorpus2_SOURCE_DIR} "../libcorpus2") +include_directories (${Libpwrutils_SOURCE_DIR} "../libpwrutils") + +link_directories(${Libcorpus2_BINARY_DIR}) + +FIND_PACKAGE(SWIG REQUIRED) +INCLUDE(${SWIG_USE_FILE}) + +find_package(PythonLibs) +find_package(PythonInterp) +# idea taken from pyplot build system +execute_process( + COMMAND + ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='${CMAKE_INSTALL_EXEC_PREFIX}')" + OUTPUT_VARIABLE PYTHON_INSTDIR + OUTPUT_STRIP_TRAILING_WHITESPACE +) +message(STATUS "INFO: " "python lib: ${PYTHON_INSTDIR}" ) + +INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +# ----------------------------------------------------------------------------- +# ----------------------------------------------------------------------------- + +SET(CMAKE_SWIG_FLAGS "") +SET(SWIG_SRC_DIR ${SWIG_DIR}/libcorpus) + +# ----------------------------------------------------------------------------- +# libpwrnlperror +SET_SOURCE_FILES_PROPERTIES(libpwrnlperror.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libpwrnlperror.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libpwrnlperror python libpwrnlperror.i ) +SWIG_LINK_LIBRARIES(libpwrnlperror ${PYTHON_LIBRARIES} ${PWRUTILS_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpus2exception +SET_SOURCE_FILES_PROPERTIES(libcorpus2exception.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpus2exception.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpus2exception python libcorpus2exception.i ) +SWIG_LINK_LIBRARIES(libcorpus2exception ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpustag +SET_SOURCE_FILES_PROPERTIES(libcorpustag.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpustag.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpustag python libcorpustag.i ) +SWIG_LINK_LIBRARIES(libcorpustag ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpustagset +SET_SOURCE_FILES_PROPERTIES(libcorpustagset.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpustagset.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpustagset python libcorpustagset.i ) +SWIG_LINK_LIBRARIES(libcorpustagset ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpustagsetmanager +SET_SOURCE_FILES_PROPERTIES(libcorpustagsetmanager.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpustagsetmanager.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpustagsetmanager python libcorpustagsetmanager.i ) +SWIG_LINK_LIBRARIES(libcorpustagsetmanager ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpuslexeme +SET_SOURCE_FILES_PROPERTIES(libcorpuslexeme.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpuslexeme.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpuslexeme python libcorpuslexeme.i ) +SWIG_LINK_LIBRARIES(libcorpuslexeme ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpussentence +SET_SOURCE_FILES_PROPERTIES(libcorpussentence.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpussentence.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpussentence python libcorpussentence.i ) +SWIG_LINK_LIBRARIES(libcorpussentence ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpuschunk +SET_SOURCE_FILES_PROPERTIES(libcorpuschunk.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpuschunk.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpuschunk python libcorpuschunk.i ) +SWIG_LINK_LIBRARIES(libcorpuschunk ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpustoken +SET_SOURCE_FILES_PROPERTIES(libcorpustoken.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpustoken.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpustoken python libcorpustoken.i ) +SWIG_LINK_LIBRARIES(libcorpustoken ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpustokenwriter +SET_SOURCE_FILES_PROPERTIES(libcorpustokenwriter.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpustokenwriter.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpustokenwriter python libcorpustokenwriter.i ) +SWIG_LINK_LIBRARIES(libcorpustokenwriter ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpustokenwriter +SET_SOURCE_FILES_PROPERTIES(libcorpustokenreader.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpustokenreader.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpustokenreader python libcorpustokenreader.i ) +SWIG_LINK_LIBRARIES(libcorpustokenreader ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpusiob +SET_SOURCE_FILES_PROPERTIES(libcorpusiob.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpusiob.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpusiob python libcorpusiob.i ) +SWIG_LINK_LIBRARIES(libcorpusiob ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpusannotationchannel +SET_SOURCE_FILES_PROPERTIES(libcorpusannotationchannel.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpusannotationchannel.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpusannotationchannel python libcorpusannotationchannel.i ) +SWIG_LINK_LIBRARIES(libcorpusannotationchannel ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpusannotationchannel +SET_SOURCE_FILES_PROPERTIES(libcorpusannotatedsentence.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpusannotatedsentence.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpusannotatedsentence python libcorpusannotatedsentence.i ) +SWIG_LINK_LIBRARIES(libcorpusannotatedsentence ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# libcorpusannotationchannel +SET_SOURCE_FILES_PROPERTIES(libcorpusannotationview.i PROPERTIES CPLUSPLUS ON) +SET_SOURCE_FILES_PROPERTIES(libcorpusannotationview.i PROPERTIES SWIG_FLAGS "-includeall" ) +SWIG_ADD_MODULE(libcorpusannotationview python libcorpusannotationview.i ) +SWIG_LINK_LIBRARIES(libcorpusannotationview ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS}) + +# ----------------------------------------------------------------------------- +# ----------------------------------------------------------------------------- + +set_target_properties( + _libpwrnlperror + _libcorpus2exception + _libcorpustag + _libcorpustagset + _libcorpustagsetmanager + _libcorpuslexeme + _libcorpustoken + _libcorpussentence + _libcorpuschunk + _libcorpustokenwriter + _libcorpustokenreader + _libcorpusiob + _libcorpusannotationchannel + _libcorpusannotatedsentence + _libcorpusannotationview + PROPERTIES + INSTALL_NAME_DIR "${PYTHON_INSTDIR}" +) + +set(PERM_SCRIPTS + OWNER_READ + OWNER_WRITE + OWNER_EXECUTE + GROUP_READ + GROUP_EXECUTE + WORLD_READ + WORLD_EXECUTE +) + +# ----------------------------------------------------------------------------- +# Install python modules +# ----------------------------------------------------------------------------- + +install( + TARGETS _libpwrnlperror _libcorpus2exception _libcorpustag _libcorpustagset + _libcorpustagsetmanager _libcorpuslexeme _libcorpustoken + _libcorpussentence _libcorpuschunk _libcorpustokenwriter + _libcorpustokenreader _libcorpusiob _libcorpusannotationchannel + _libcorpusannotatedsentence _libcorpusannotationview + + LIBRARY + DESTINATION ${PYTHON_INSTDIR} + PERMISSIONS ${PERM_SCRIPTS} +) + +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/libcorpus2exception.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpus2exception.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpustag.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpustagset.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpustagsetmanager.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpuslexeme.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpustoken.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpussentence.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpuschunk.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpustokenwriter.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpustokenreader.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpusiob.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpusannotationchannel.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpusannotatedsentence.py + ${CMAKE_CURRENT_BINARY_DIR}/libcorpusannotationview.py + DESTINATION ${PYTHON_INSTDIR} + PERMISSIONS ${PERM_SCRIPTS} +) + +# ----------------------------------------------------------------------------- +# Install SWIG files +# ----------------------------------------------------------------------------- + +install( + FILES libcorpus2exception.i + libcorpus2exception.i + libcorpustag.i + libcorpustagset.i + libcorpustagsetmanager.i + libcorpuslexeme.i + libcorpustoken.i + libcorpussentence.i + libcorpuschunk.i + libcorpustokenwriter.i + libcorpustokenreader.i + libcorpusiob.i + libcorpusannotationchannel.i + libcorpusannotatedsentence.i + libcorpusannotationview.i + DESTINATION ${SWIG_SRC_DIR} + PERMISSIONS ${PERM_SCRIPTS} +)