diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..309b0cd
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "cmake/backbone"]
+ path = cmake/backbone
+ url = git@git.backbone.ws:cmake/backbone.git
+[submodule "util/backbone"]
+ path = util/backbone
+ url = git@git.backbone.ws:cmake/backbone-utils.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 50403d0..4f5af0c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,130 +2,20 @@ PROJECT (LAviewLatexStruct C)
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
+SET (PROJECT_LOWERCASE_NAME "laview-latex-struct")
+SET (PROJECT_DESCRIPTION "LaTeX representation in the memory.")
+
SET (MAJOR 0)
-SET (MINOR 0)
-SET (PATCH 1)
-SET (VERSION ${MAJOR}.${MINOR}.${PATCH})
+SET (MINOR 1)
+SET (PATCH 0)
-LIST (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
-INCLUDE (MacroOptionalAddSubdirectory)
-INCLUDE (CPackDetectArch)
-
-SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") # supress Gcc warnings
-SET (PROJ_LCASE "laview-latex-struct")
-
-# configure a header file for Gettext
-SET (GETTEXT_PACKAGE "${PROJ_LCASE}")
-ADD_DEFINITIONS (-DGETTEXT_PACKAGE="${GETTEXT_PACKAGE}")
-IF (WIN32)
- SET (LOCALEDIR "")
-ELSE ()
- SET (LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale")
-ENDIF ()
-SET (CUSTOM_LOCALEDIR "" CACHE STRING "Directory to install l10n files into")
-IF (NOT CUSTOM_LOCALEDIR STREQUAL "")
- SET (LOCALEDIR "${CUSTOM_LOCALEDIR}")
- MESSAGE(STATUS "Using LOCALEDIR=${LOCALEDIR}")
-ENDIF ()
-ADD_DEFINITIONS (-DLOCALEDIR="${LOCALEDIR}")
-SET (LOCALE_INSTALL_DIR "share/locale")
-MACRO_OPTIONAL_ADD_SUBDIRECTORY (po)
-
-# Avoid of "dll not found" messages
-SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/run")
-
-# configure a header file for Gettext
-CONFIGURE_FILE (
- "${PROJECT_SOURCE_DIR}/src/gettext-config.h.in"
- "${PROJECT_BINARY_DIR}/src/gettext-config.h"
- )
-
-IF ( CMAKE_BUILD_TYPE STREQUAL "Debug" )
- SET (VALA_DEBUG "-g")
-ENDIF ()
-
-# configure pkg-config file
-IF (WIN32)
- SET (prefix "")
-ELSE ()
- SET (prefix ${CMAKE_INSTALL_PREFIX})
-ENDIF ()
-SET (exec_prefix "\${prefix}")
-SET (libdir "\${exec_prefix}/lib")
-SET (prefincludedir "\${prefix}/include")
-SET (link_lib1 "\${libdir}")
-SET (link_lib2 "laview-latex-struct")
-CONFIGURE_FILE (
- "${PROJECT_SOURCE_DIR}/laview-latex-struct.pc.in"
- "${PROJECT_BINARY_DIR}/laview-latex-struct-${MAJOR}.pc"
- )
-
-SET (CMAKE_C_FLAGS_DEBUG "-ggdb3 -O0 -ftest-coverage -Wcoverage-mismatch ${CMAKE_C_FLAGS_DEBUG}")
-SET (CMAKE_C_FLAGS_RELEASE "-O2 ${CMAKE_C_FLAGS_RELEASE}")
+LIST (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/backbone)
ADD_SUBDIRECTORY (src)
+ADD_SUBDIRECTORY (po)
+ADD_SUBDIRECTORY (pkg-config)
ADD_SUBDIRECTORY (test)
+ADD_SUBDIRECTORY (cpack)
-## CPack configuration ##
-SET (CPACK_PACKAGE_CONTACT "backbone@backbone.ws")
-SET (CPACK_PACKAGE_VENDOR "backbone@backbone.ws")
-SET (CPACK_NSIS_MODIFY_PATH ON)
-SET (CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
-INCLUDE (InstallRequiredSystemLibraries)
-SET (CPACK_RESOURCE_FILE_LICENSE
- "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
-SET (CPACK_PACKAGE_DESCRIPTION_FILE
- "${CMAKE_CURRENT_SOURCE_DIR}/README")
-INSTALL (FILES "${PROJECT_BINARY_DIR}/laview-latex-struct-${MAJOR}.pc"
- DESTINATION lib/pkgconfig)
-INSTALL (FILES "${PROJECT_BINARY_DIR}/src/laview-latex-struct-${MAJOR}.vapi"
- DESTINATION share/vala/vapi)
-#SET (CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME}")
-#SET (CPACK_NSIS_DISPLAY_NAME "${PROJECT_NAME}")
-SET (CPACK_PACKAGE_VERSION_MAJOR "${MAJOR}")
-SET (CPACK_PACKAGE_VERSION_MINOR "${MINOR}")
-SET (CPACK_PACKAGE_VERSION_PATCH "${PATCH}")
-SET (CPACK_PACKAGE_VERSION "${VERSION}")
-
-IF (UNIX)
- SET (CPACK_GENERATOR "DEB;RPM;STGZ;TBZ2;TGZ;TZ;ZIP")
- SET (CPACK_SOURCE_GENERATOR "DEB;RPM;STGZ;TBZ2;TGZ;TZ;ZIP")
- SET (CPACK_PACKAGE_NAME "laview-latex-struct")
- SET (CPACK_PACKAGE_DESCRIPTION_SUMMARY "LaTeX representation in the memory")
- SET (CPACK_PACKAGE_DESCRIPTION "LaTeX representation in the memory "
- "Scanner + Generator + Operations on document objects.")
-
- # Debian specific options
- SET (CPACK_DEBIAN_PACKAGE_DEPENDS "valac (>= 0.24), libglib2.0-bin (>= 2.33)")
- SET (CPACK_DEBIAN_PACKAGE_SECTION "Libraries")
- # SET (CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${ARCHITECTURE}")
- # SET (CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
- SET (CPACK_DEBIAN_PACKAGE_RECOMMENDS "")
- SET (CPACK_DEBIAN_PACKAGE_SUGGESTS "")
-
- # RPM specific options
- # SET (CPACK_RPM_PACKAGE_ARCHITECTURE "${ARCHITECTURE}")
- SET (CPACK_RPM_PACKAGE_LICENSE "LGPLv3+")
- SET (CPACK_RPM_PACKAGE_GROUP "Applications/Text")
- SET (CPACK_RPM_PACKAGE_REQUIRES "vala >= 0.24, glib >= 2.33")
- SET (CPACK_RPM_PACKAGE_PROVIDES "laview-latex-struct")
-
- # http://public.kitware.com/Bug/view.php?id=12997
- SET(CPACK_PACKAGE_FILE_NAME
- "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${ARCHITECTURE}")
-
-ELSEIF (WIN32)
- SET (CPACK_GENERATOR "NSIS")
- SET (CPACK_SOURCE_GENERATOR "NSIS")
- SET (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CMAKE_PROJECT_NAME}-${MAJOR}")
- #SET (CPACK_NSIS_MENU_LINKS "${EWS_WEBSITE}" "Homepage for ${EWS_APP_NAME}")
- #SET (CPACK_NSIS_INSTALLED_ICON_NAME bin\\\\${EXE_TARGET_NAME}.exe)
- #SET (CPACK_NSIS_URL_INFO_ABOUT "${EWS_WEBSITE}")
- #SET (CPACK_NSIS_HELP_LINK "${EWS_WEBSITE}")
- SET (CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_PROJECT_NAME}-${MAJOR}")
- SET (CPACK_UNINSTALL_NAME "LVLatStr-${MAJOR}") # <=10 symbols: https://redmine.backbone.ws/issues/83
-ENDIF ()
-
-INCLUDE (CPack)
-
-INCLUDE (CTest)
+# enable testing
+ENABLE_TESTING ()
diff --git a/INSTALL b/INSTALL
index 067d493..3e899a5 100644
--- a/INSTALL
+++ b/INSTALL
@@ -6,7 +6,7 @@
Vala: https://wiki.gnome.org/Projects/Vala
Gee: https://wiki.gnome.org/Projects/Libgee
CMake: http://www.cmake.org
-NSIS (Win-only): http://nsis.sourceforge.net
+NSIS (W32): http://nsis.sourceforge.net
Run-Time Dependencies
@@ -29,18 +29,15 @@ pull-requests to the mainstream.
$ mkdir build-gcc && cd build-gcc
$ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
-$ make
+$ make -j$((`getconf _NPROCESSORS_ONLN`+1))
Compilation under MS Windows
$ mkdir build-mingw && cd build-mingw
-$ LANG=en
-$ PKG_CONFIG_PATH=
-$ PATH=/c/MinGW/lib:/c/MinGW/bin:$PATH
$ cmake -G "MSYS Makefiles" .. -DCMAKE_BUILD_TYPE=Release
-$ make
+$ make -j$((NUMBER_OF_PROCESSORS + 1))
- Compilation under BSD-based.
+ Compilation under BSD-based Systems.
TODO: add description here.
@@ -51,17 +48,17 @@ TODO: add description here.
Packing/Installation under GNU/Linux
$ cpack
-Install using your favourite package manager.
+Install using System Package Manager.
Packing/Installation under MS Windows
$ cpack
-Install using an executable generated by NSIS.
+Install using generated by NSIS executable.
Packing/Installation under BSD-based
$ cpack
-Install using your favourite package manager.
+Install using System Package Manager.
Testing
@@ -69,17 +66,19 @@ Install using your favourite package manager.
Testing under GNU/Linux
-$ LANG=en ctest
+$ ctest -j$((`getconf _NPROCESSORS_ONLN`+1))
Automated tests for memory leaks:
-$ LANG=en ctest -D NightlyMemCheck && grep definitely Testing/Temporary/LastDynamicAnalysis_*.log
+$ ctest -j$((NUMBER_OF_PROCESSORS + 1)) -D NightlyMemCheck && grep definitely Testing/Temporary/LastDynamicAnalysis_*.log
Testing under MS Windows
-$ LANG=en ctest
+$ ctest -j$((NUMBER_OF_PROCESSORS + 1))
Automated tests for memory leaks are not available as far as Valgrind not
present on this platform.
Testing under BSD-based
-$ LANG=en ctest
+$ ctest
+Automated tests for memory leaks are not available as far as Valgrind not
+present on this platform.
diff --git a/cmake/CPackDetectArch.cmake b/cmake/CPackDetectArch.cmake
deleted file mode 100644
index e878179..0000000
--- a/cmake/CPackDetectArch.cmake
+++ /dev/null
@@ -1,20 +0,0 @@
-# Kernel of Operation System
-EXECUTE_PROCESS (COMMAND uname -s COMMAND tr -d '\n' OUTPUT_VARIABLE OSKERNEL)
-MESSAGE ("OSKERNEL = ${OSKERNEL}")
-STRING (TOLOWER "${OSKERNEL}" OSKERNEL)
-
-# CPU Architecture
-SET (CUSTOM_ARCHITECTURE "" CACHE STRING "Specify custom target architecutre")
-SET (ARCHITECTURE "${CUSTOM_ARCHITECTURE}")
-IF (ARCHITECTURE STREQUAL "")
- # SET (ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}")
- # SET (ARCHITECTURE "${CMAKE_HOST_SYSTEM_PROCESSOR}")
- EXECUTE_PROCESS(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE)
-
- # Replacements
- STRING (REGEX REPLACE "^x86_64$" "amd64" ARCHITECTURE "${ARCHITECTURE}")
- STRING (REGEX REPLACE "^i.86$" "i386" ARCHITECTURE "${ARCHITECTURE}")
- STRING (REGEX REPLACE "^armv7l$" "armel" ARCHITECTURE "${ARCHITECTURE}")
-
-ENDIF ()
-MESSAGE ("ARCHITECTURE = ${ARCHITECTURE}")
diff --git a/cmake/FindVala.cmake b/cmake/FindVala.cmake
deleted file mode 100644
index c8854ce..0000000
--- a/cmake/FindVala.cmake
+++ /dev/null
@@ -1,69 +0,0 @@
-##
-# Find module for the Vala compiler (valac)
-#
-# This module determines wheter a Vala compiler is installed on the current
-# system and where its executable is.
-#
-# Call the module using "find_package(Vala) from within your CMakeLists.txt.
-#
-# The following variables will be set after an invocation:
-#
-# VALA_FOUND Whether the vala compiler has been found or not
-# VALA_EXECUTABLE Full path to the valac executable if it has been found
-# VALA_VERSION Version number of the available valac
-# VALA_USE_FILE Include this file to define the vala_precompile function
-##
-
-##
-# Copyright 2009-2010 Jakob Westhoff. All rights reserved.
-# Copyright 2010-2011 Daniel Pfeifer
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY JAKOB WESTHOFF ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL JAKOB WESTHOFF OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# The views and conclusions contained in the software and documentation are those
-# of the authors and should not be interpreted as representing official policies,
-# either expressed or implied, of Jakob Westhoff
-##
-
-# Search for the valac executable in the usual system paths.
-find_program(VALA_EXECUTABLE valac)
-mark_as_advanced(VALA_EXECUTABLE)
-
-# Determine the valac version
-if(VALA_EXECUTABLE)
- execute_process(COMMAND ${VALA_EXECUTABLE} "--version"
- OUTPUT_VARIABLE VALA_VERSION
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- string(REPLACE "Vala " "" VALA_VERSION "${VALA_VERSION}")
-endif(VALA_EXECUTABLE)
-
-# Handle the QUIETLY and REQUIRED arguments, which may be given to the find call.
-# Furthermore set VALA_FOUND to TRUE if Vala has been found (aka.
-# VALA_EXECUTABLE is set)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Vala
- REQUIRED_VARS VALA_EXECUTABLE
- VERSION_VAR VALA_VERSION)
-
-set(VALA_USE_FILE "${CMAKE_CURRENT_LIST_DIR}/UseVala.cmake")
-
diff --git a/cmake/MacroOptionalAddSubdirectory.cmake b/cmake/MacroOptionalAddSubdirectory.cmake
deleted file mode 100644
index 545048b..0000000
--- a/cmake/MacroOptionalAddSubdirectory.cmake
+++ /dev/null
@@ -1,31 +0,0 @@
-# - MACRO_OPTIONAL_ADD_SUBDIRECTORY() combines ADD_SUBDIRECTORY() with an OPTION()
-# MACRO_OPTIONAL_ADD_SUBDIRECTORY(
)
-# If you use MACRO_OPTIONAL_ADD_SUBDIRECTORY() instead of ADD_SUBDIRECTORY(),
-# this will have two effects
-# 1 - CMake will not complain if the directory doesn't exist
-# This makes sense if you want to distribute just one of the subdirs
-# in a source package, e.g. just one of the subdirs in kdeextragear.
-# 2 - If the directory exists, it will offer an option to skip the
-# subdirectory.
-# This is useful if you want to compile only a subset of all
-# directories.
-
-# Copyright (c) 2007, Alexander Neundorf,
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
-
-MACRO (MACRO_OPTIONAL_ADD_SUBDIRECTORY _dir )
- GET_FILENAME_COMPONENT(_fullPath ${_dir} ABSOLUTE)
- IF(EXISTS ${_fullPath})
- IF(${ARGC} EQUAL 2)
- OPTION(BUILD_${_dir} "Build directory ${_dir}" ${ARGV1})
- ELSE(${ARGC} EQUAL 2)
- OPTION(BUILD_${_dir} "Build directory ${_dir}" TRUE)
- ENDIF(${ARGC} EQUAL 2)
- IF(BUILD_${_dir})
- ADD_SUBDIRECTORY(${_dir})
- ENDIF(BUILD_${_dir})
- ENDIF(EXISTS ${_fullPath})
-ENDMACRO (MACRO_OPTIONAL_ADD_SUBDIRECTORY)
diff --git a/cmake/UseVala.cmake b/cmake/UseVala.cmake
deleted file mode 100644
index 436d1d0..0000000
--- a/cmake/UseVala.cmake
+++ /dev/null
@@ -1,180 +0,0 @@
-##
-# Compile vala files to their c equivalents for further processing.
-#
-# The "vala_precompile" function takes care of calling the valac executable on
-# the given source to produce c files which can then be processed further using
-# default cmake functions.
-#
-# The first parameter provided is a variable, which will be filled with a list
-# of c files outputted by the vala compiler. This list can than be used in
-# conjuction with functions like "add_executable" or others to create the
-# neccessary compile rules with CMake.
-#
-# The following sections may be specified afterwards to provide certain options
-# to the vala compiler:
-#
-# SOURCES
-# A list of .vala files to be compiled. Please take care to add every vala
-# file belonging to the currently compiled project or library as Vala will
-# otherwise not be able to resolve all dependencies.
-#
-# PACKAGES
-# A list of vala packages/libraries to be used during the compile cycle. The
-# package names are exactly the same, as they would be passed to the valac
-# "--pkg=" option.
-#
-# OPTIONS
-# A list of optional options to be passed to the valac executable. This can be
-# used to pass "--thread" for example to enable multi-threading support.
-#
-# CUSTOM_VAPIS
-# A list of custom vapi files to be included for compilation. This can be
-# useful to include freshly created vala libraries without having to install
-# them in the system.
-#
-# GENERATE_VAPI
-# Pass all the needed flags to the compiler to create an internal vapi for
-# the compiled library. The provided name will be used for this and a
-# .vapi file will be created.
-#
-# GENERATE_HEADER
-# Let the compiler generate a header file for the compiled code. There will
-# be a header file as well as an internal header file being generated called
-# .h and _internal.h
-#
-# The following call is a simple example to the vala_precompile macro showing
-# an example to every of the optional sections:
-#
-# find_package(Vala "0.12" REQUIRED)
-# inlcude(${VALA_USE_FILE})
-#
-# vala_precompile(VALA_C
-# SOURCES
-# source1.vala
-# source2.vala
-# source3.vala
-# PACKAGES
-# gtk+-2.0
-# gio-1.0
-# posix
-# DIRECTORY
-# gen
-# OPTIONS
-# --thread
-# CUSTOM_VAPIS
-# some_vapi.vapi
-# GENERATE_VAPI
-# myvapi
-# GENERATE_HEADER
-# myheader
-# )
-#
-# Most important is the variable VALA_C which will contain all the generated c
-# file names after the call.
-##
-
-##
-# Copyright 2009-2010 Jakob Westhoff. All rights reserved.
-# Copyright 2010-2011 Daniel Pfeifer
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY JAKOB WESTHOFF ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL JAKOB WESTHOFF OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# The views and conclusions contained in the software and documentation are those
-# of the authors and should not be interpreted as representing official policies,
-# either expressed or implied, of Jakob Westhoff
-##
-
-include(CMakeParseArguments)
-
-function(vala_precompile output)
- cmake_parse_arguments(ARGS "" "DIRECTORY;GENERATE_HEADER;GENERATE_VAPI"
- "SOURCES;PACKAGES;OPTIONS;CUSTOM_VAPIS" ${ARGN})
-
- if(ARGS_DIRECTORY)
- set(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${ARGS_DIRECTORY})
- else(ARGS_DIRECTORY)
- set(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
- endif(ARGS_DIRECTORY)
- include_directories(${DIRECTORY})
- set(vala_pkg_opts "")
- foreach(pkg ${ARGS_PACKAGES})
- list(APPEND vala_pkg_opts "--pkg=${pkg}")
- endforeach(pkg ${ARGS_PACKAGES})
- set(in_files "")
- set(out_files "")
- foreach(src ${ARGS_SOURCES} ${ARGS_UNPARSED_ARGUMENTS})
- list(APPEND in_files "${CMAKE_CURRENT_SOURCE_DIR}/${src}")
- string(REPLACE ".vala" ".c" src ${src})
- string(REPLACE ".gs" ".c" src ${src})
- set(out_file "${DIRECTORY}/${src}")
- list(APPEND out_files "${DIRECTORY}/${src}")
- endforeach(src ${ARGS_SOURCES} ${ARGS_UNPARSED_ARGUMENTS})
-
- set(custom_vapi_arguments "")
- if(ARGS_CUSTOM_VAPIS)
- foreach(vapi ${ARGS_CUSTOM_VAPIS})
- if(${vapi} MATCHES ${CMAKE_SOURCE_DIR} OR ${vapi} MATCHES ${CMAKE_BINARY_DIR})
- list(APPEND custom_vapi_arguments ${vapi})
- else (${vapi} MATCHES ${CMAKE_SOURCE_DIR} OR ${vapi} MATCHES ${CMAKE_BINARY_DIR})
- list(APPEND custom_vapi_arguments ${CMAKE_CURRENT_SOURCE_DIR}/${vapi})
- endif(${vapi} MATCHES ${CMAKE_SOURCE_DIR} OR ${vapi} MATCHES ${CMAKE_BINARY_DIR})
- endforeach(vapi ${ARGS_CUSTOM_VAPIS})
- endif(ARGS_CUSTOM_VAPIS)
-
- set(vapi_arguments "")
- if(ARGS_GENERATE_VAPI)
- list(APPEND out_files "${DIRECTORY}/${ARGS_GENERATE_VAPI}.vapi")
- set(vapi_arguments "--internal-vapi=${ARGS_GENERATE_VAPI}.vapi")
-
- # Header and internal header is needed to generate internal vapi
- if (NOT ARGS_GENERATE_HEADER)
- set(ARGS_GENERATE_HEADER ${ARGS_GENERATE_VAPI})
- endif(NOT ARGS_GENERATE_HEADER)
- endif(ARGS_GENERATE_VAPI)
-
- set(header_arguments "")
- if(ARGS_GENERATE_HEADER)
- list(APPEND out_files "${DIRECTORY}/${ARGS_GENERATE_HEADER}.h")
- list(APPEND out_files "${DIRECTORY}/${ARGS_GENERATE_HEADER}_internal.h")
- list(APPEND header_arguments "--header=${DIRECTORY}/${ARGS_GENERATE_HEADER}.h")
- list(APPEND header_arguments "--internal-header=${DIRECTORY}/${ARGS_GENERATE_HEADER}_internal.h")
- endif(ARGS_GENERATE_HEADER)
-
- add_custom_command(OUTPUT ${out_files}
- COMMAND
- ${VALA_EXECUTABLE}
- ARGS
- "-C"
- ${header_arguments}
- ${vapi_arguments}
- "-b" ${CMAKE_CURRENT_SOURCE_DIR}
- "-d" ${DIRECTORY}
- ${vala_pkg_opts}
- ${ARGS_OPTIONS}
- ${in_files}
- ${custom_vapi_arguments}
- DEPENDS
- ${in_files}
- ${ARGS_CUSTOM_VAPIS}
- )
- set(${output} ${out_files} PARENT_SCOPE)
-endfunction(vala_precompile)
diff --git a/cmake/backbone b/cmake/backbone
new file mode 160000
index 0000000..7041f32
--- /dev/null
+++ b/cmake/backbone
@@ -0,0 +1 @@
+Subproject commit 7041f32ce90e745a7084ac4c5369dfb82da6685b
diff --git a/cpack/CMakeLists.txt b/cpack/CMakeLists.txt
new file mode 100644
index 0000000..3181975
--- /dev/null
+++ b/cpack/CMakeLists.txt
@@ -0,0 +1,11 @@
+SET (CONTACT "backbone@backbone.ws")
+SET (DEBIAN_DEPENDENCIES "valac (>= 0.24), libglib2.0-bin (>= 2.33), libgee (>=
+0.16)")
+SET (DEBIAN_SECTION "Libraries")
+SET (REDHAT_DEPENDENCIES "vala >= 0.24, glib >= 2.33, libgee >= 0.16")
+SET (REDHAT_SECTION "Applications/Text")
+SET (LICENSE "LGPLv3+")
+SET (WIN32_UNINSTALL_NAME "LVLatStr") # <= 8 symbols for the name
+
+LIST (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+INCLUDE (CPackCommon)
diff --git a/laview-latex-struct.pc.in b/laview-latex-struct.pc.in
deleted file mode 100644
index 40fa22e..0000000
--- a/laview-latex-struct.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@prefincludedir@
-
-Name: LaTeX-Struct
-Description: LaTeX representation in the memory + Scanner + Generator + Operations on document objects.
-Version: @VERSION@
-Libs: -L@link_lib1@ -l@link_lib2@
-Libs.private:
-Cflags:
diff --git a/pkg-config/CMakeLists.txt b/pkg-config/CMakeLists.txt
new file mode 100644
index 0000000..77cb03a
--- /dev/null
+++ b/pkg-config/CMakeLists.txt
@@ -0,0 +1,22 @@
+# configure pkg-config file
+IF (WIN32)
+ SET (PkgConfigPrefix "")
+ELSE ()
+ SET (PkgConfigPrefix ${CMAKE_INSTALL_PREFIX})
+ENDIF ()
+SET (PkgConfigExecPrefix "\${prefix}")
+SET (PkgConfigLibDir "\${exec_prefix}/lib")
+SET (PkgConfigIncludeDir "\${prefix}/include")
+
+SET (PkgConfigName "${CMAKE_PROJECT_NAME}")
+SET (PkgConfigDescription "${PROJECT_DESCRIPTION}")
+SET (PkgConfigVersion "${MAJOR}.${MINOR}.${PATCH}")
+SET (PkgConfigLibs "-L\${libdir}")
+SET (PkgConfigLibs "${PkgConfigLibs} -l${PROJECT_LOWERCASE_NAME}-${MAJOR}")
+SET (PkgConfigLibsPrivate "")
+SET (PkgConfigCflags "")
+
+CONFIGURE_FILE (
+ "${CMAKE_CURRENT_SOURCE_DIR}/pkg-config.pc.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_LOWERCASE_NAME}-${MAJOR}.pc"
+)
diff --git a/pkg-config/pkg-config.pc.in b/pkg-config/pkg-config.pc.in
new file mode 100644
index 0000000..ad5264d
--- /dev/null
+++ b/pkg-config/pkg-config.pc.in
@@ -0,0 +1,11 @@
+prefix=@PkgConfigPrefix@
+exec_prefix=@PkgConfigExecPrefix@
+libdir=@PkgConfigLibDir@
+includedir=@PkgConfigIncludeDir@
+
+Name: @PkgConfigName@
+Description: @PkgConfigDescription@
+Version: @PkgConfigVersion@
+Libs: @PkgConfigLibs@
+Libs.private: @PkgConfigLibsPrivate@
+Cflags: @PkgConfigCflags@
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
index a588e22..946851e 100644
--- a/po/CMakeLists.txt
+++ b/po/CMakeLists.txt
@@ -1,9 +1,41 @@
-find_package(Gettext REQUIRED)
-if (NOT GETTEXT_MSGMERGE_EXECUTABLE)
-MESSAGE(FATAL_ERROR "Please install msgmerge binary")
-endif (NOT GETTEXT_MSGMERGE_EXECUTABLE)
-if (NOT GETTEXT_MSGFMT_EXECUTABLE)
-MESSAGE(FATAL_ERROR "Please install msgmerge binary")
-endif (NOT GETTEXT_MSGFMT_EXECUTABLE)
-add_subdirectory(ru)
-#add_subdirectory(de)
+SET (GETTEXT_PACKAGE "${PROJECT_LOWERCASE_NAME_ABI}")
+ADD_DEFINITIONS (-DGETTEXT_PACKAGE="${GETTEXT_PACKAGE}")
+
+IF (WIN32)
+ SET (LOCALEDIR "")
+ELSE ()
+ SET (LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale")
+ENDIF ()
+
+SET (CUSTOM_LOCALEDIR "" CACHE STRING "Directory to install l10n files into")
+
+IF (NOT CUSTOM_LOCALEDIR STREQUAL "")
+ SET (LOCALEDIR "${CUSTOM_LOCALEDIR}")
+ MESSAGE(STATUS "Using LOCALEDIR=${LOCALEDIR}")
+ENDIF ()
+
+ADD_DEFINITIONS (-DLOCALEDIR="${LOCALEDIR}")
+SET (LOCALE_INSTALL_DIR "share/locale")
+LIST (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+INCLUDE (MacroOptionalAddSubdirectory)
+FIND_PACKAGE (Gettext REQUIRED)
+
+MACRO_OPTIONAL_ADD_SUBDIRECTORY (langs)
+
+# configure a header file for Gettext
+SET (VERSION ${MAJOR}.${MINOR}.${PATCH})
+SET (PROJECT_LOWERCASE_NAME_ABI "${PROJECT_LOWERCASE_NAME}-${MAJOR}")
+
+STRING (TOUPPER "${CMAKE_PROJECT_NAME}" GettextUniqueHeader)
+SET (GettextPackageNameAbi "${PROJECT_LOWERCASE_NAME_ABI}")
+CONFIGURE_FILE (
+ "gettext-config.h.in"
+ "${PROJECT_BINARY_DIR}/po/gettext-config.h"
+ )
+
+IF (NOT GETTEXT_MSGMERGE_EXECUTABLE)
+ MESSAGE (FATAL_ERROR "Please install msgmerge binary")
+ENDIF (NOT GETTEXT_MSGMERGE_EXECUTABLE)
+IF (NOT GETTEXT_MSGFMT_EXECUTABLE)
+ MESSAGE(FATAL_ERROR "Please install msgmerge binary")
+ENDIF (NOT GETTEXT_MSGFMT_EXECUTABLE)
diff --git a/po/gettext-config.h.in b/po/gettext-config.h.in
new file mode 100644
index 0000000..7dd3e38
--- /dev/null
+++ b/po/gettext-config.h.in
@@ -0,0 +1,11 @@
+#ifndef @GettextUniqueHeader@_H
+#define @GettextUniqueHeader@_H
+
+#define GETTEXT_PACKAGE "@GettextPackageNameAbi@"
+#include
+
+#ifdef WIN32
+#define _(String) dgettext (GETTEXT_PACKAGE, String)
+#endif
+
+#endif // @GettextUniqueHeader@_H
diff --git a/po/laview-latex-struct-0.pot b/po/laview-latex-struct-0.pot
index 44b4dcd..1cc17f4 100644
--- a/po/laview-latex-struct-0.pot
+++ b/po/laview-latex-struct-0.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: laview-latex-struct-0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-07-31 18:16+0400\n"
+"POT-Creation-Date: 2014-10-26 17:59+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -17,57 +17,57 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:58
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/GlobParser.vala:58
#, c-format
msgid "Begin tag sequence '%s' without end tag pair."
msgstr ""
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:127
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:582
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/GlobParser.vala:127
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:585
#, c-format
msgid ": Unexpected end tag sequence '%s' without begin tag pair."
msgstr ""
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:148
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:148
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:179
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:188
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:205
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/GlobParser.vala:148
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:148
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:179
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:188
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:205
msgid "Error parsing subdoc."
msgstr ""
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/LongtableParser.vala:44
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/LongtableParser.vala:44
#, c-format
msgid "Incorrect longtable parameters doesn't match '%s' regexp."
msgstr ""
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/Table.vala:298
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/Table.vala:298
msgid "2nd param (ATable) isn't a child of the 1st (Glob)."
msgstr ""
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/Table.vala:312
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/Table.vala:312
msgid "3rd param (limits) is incorrect. Read the manual."
msgstr ""
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/Table.vala:329
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/Table.vala:329
msgid "Cann't split the table. Read the manual."
msgstr ""
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:413
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:416
#, c-format
msgid "Unexpected end external tag sequence '%s' without begin tag pair."
msgstr ""
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:449
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:452
#, c-format
msgid "Begin tag sequence '%s':%d:%d without end tag pair."
msgstr ""
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:612
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:615
msgid "\\cline parameters doesn't match {number-number} regexp."
msgstr ""
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TabularParser.vala:43
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TabularParser.vala:43
#, c-format
msgid "Incorrect tabular parameters doesn't match '%s' regexp."
msgstr ""
diff --git a/po/ru/laview-latex-struct-0.po b/po/ru/laview-latex-struct-0.po
index dfa2a2f..05fe7b0 100644
--- a/po/ru/laview-latex-struct-0.po
+++ b/po/ru/laview-latex-struct-0.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: laview-latex-struct-0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-07-31 18:16+0400\n"
+"POT-Creation-Date: 2014-10-26 15:56+0300\n"
"PO-Revision-Date: 2014-05-28 10:50+0400\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
@@ -18,62 +18,62 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:58
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/GlobParser.vala:58
#, c-format
msgid "Begin tag sequence '%s' without end tag pair."
msgstr "Стартовая последовательность тегов '%s' без соответствующей стоп-пары."
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:127
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:582
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/GlobParser.vala:127
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:585
#, c-format
msgid ": Unexpected end tag sequence '%s' without begin tag pair."
msgstr ""
": Неожиданная завершающая последовательность тегов '%s' без соответствующей "
"старт-пары."
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/GlobParser.vala:148
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:148
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:179
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:188
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:205
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/GlobParser.vala:148
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:148
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:179
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:188
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:205
msgid "Error parsing subdoc."
msgstr "Ошибка разбора поддокумента."
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/LongtableParser.vala:44
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/LongtableParser.vala:44
#, c-format
msgid "Incorrect longtable parameters doesn't match '%s' regexp."
msgstr "Неверные параметры longtable не удовлетворяют рег. выражению '%s'."
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/Table.vala:298
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/Table.vala:298
msgid "2nd param (ATable) isn't a child of the 1st (Glob)."
msgstr "2-ой параметр (ATable) не является дочерним узлом 1-ого (Glob)."
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/Table.vala:312
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/Table.vala:312
msgid "3rd param (limits) is incorrect. Read the manual."
msgstr "3-ий параметр (limits) не верный. Смотрите документацию."
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/Table.vala:329
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/Table.vala:329
msgid "Cann't split the table. Read the manual."
msgstr "Невозможно разбить таблицу. Смотрите документацию."
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:413
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:416
#, c-format
msgid "Unexpected end external tag sequence '%s' without begin tag pair."
msgstr ""
": Неожиданная завершающая последовательность внешних тегов '%s' без "
"соответствующей старт-пары."
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:449
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:452
#, c-format
msgid "Begin tag sequence '%s':%d:%d without end tag pair."
msgstr ""
"Стартовая последовательность тегов '%s':%d:%d без соответствующей стоп-пары."
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TableParser.vala:612
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TableParser.vala:615
msgid "\\cline parameters doesn't match {number-number} regexp."
msgstr "Параметры \\cline не соответствует рег. выражению {число-число}."
-#: /home/kolan/projects/LAview/LaTeX-Struct/src/TabularParser.vala:43
+#: /home/kolan/projects/LAview/latex-struct/src/latex-struct/TabularParser.vala:43
#, c-format
msgid "Incorrect tabular parameters doesn't match '%s' regexp."
msgstr "Неверные параметры tabular не удовлетворяют рег. выражению '%s'."
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6abb6b8..0300a5e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,36 +1,3 @@
-INCLUDE (FindVala)
-INCLUDE (UseVala)
+INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/po)
-FIND_PACKAGE (PkgConfig REQUIRED)
-
-PKG_CHECK_MODULES (GEE REQUIRED gee-0.8)
-INCLUDE_DIRECTORIES (${GEE_INCLUDE_DIRS})
-
-FILE (GLOB_RECURSE LAviewSources RELATIVE ${CMAKE_SOURCE_DIR}/src *.vala)
-
-VALA_PRECOMPILE (VALA_C ${LAviewSources}
- PACKAGES gee-0.8 posix
- OPTIONS --thread ${VALA_DEBUG} --vapi=${CMAKE_BINARY_DIR}/src/${PROJ_LCASE}-${MAJOR}.vapi
- CUSTOM_VAPIS
- GENERATE_VAPI ${PROJ_LCASE}-${MAJOR}_internal
- GENERATE_HEADER ${PROJ_LCASE}-${MAJOR}
- )
-INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}")
-ADD_LIBRARY (${PROJ_LCASE} SHARED ${VALA_C} ${PROJECT_SOURCE_DIR}/src/vala_unsupported.c)
-TARGET_LINK_LIBRARIES (${PROJ_LCASE} ${GEE_LIBRARIES})
-SET_TARGET_PROPERTIES (${PROJ_LCASE} PROPERTIES VERSION ${VERSION})
-SET_TARGET_PROPERTIES (${PROJ_LCASE} PROPERTIES SOVERSION ${MAJOR})
-IF (WIN32)
- SET_TARGET_PROPERTIES (${PROJ_LCASE} PROPERTIES PREFIX "" IMPORT_PREFIX "" SUFFIX "-${MAJOR}.dll")
-ENDIF (WIN32)
-
-IF (UNIX)
- INSTALL (TARGETS ${PROJ_LCASE} DESTINATION lib)
-ELSEIF (WIN32)
- INSTALL (TARGETS ${PROJ_LCASE}
- RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib
- ARCHIVE DESTINATION lib)
-ENDIF (UNIX)
-
-INSTALL (FILES ${CMAKE_BINARY_DIR}/src/${PROJ_LCASE}-${MAJOR}.h DESTINATION include)
+ADD_SUBDIRECTORY (latex-struct)
diff --git a/src/gettext-config.h.in b/src/gettext-config.h.in
deleted file mode 100644
index e88d6ba..0000000
--- a/src/gettext-config.h.in
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef LAVIEW_LATEX_STRUCT_H
-#define LAVIEW_LATEX_STRUCT_H
-
-#define GETTEXT_PACKAGE "laview-latex-struct-@LAVIEW_LATEX_STRUCT_VERSION_MAJOR@"
-#include
-
-#ifdef WIN32
-#define _(String) dgettext (GETTEXT_PACKAGE, String)
-#endif
-
-#endif // LAVIEW_LATEX_STRUCT_H
diff --git a/src/AddSpace.vala b/src/latex-struct/AddSpace.vala
similarity index 100%
rename from src/AddSpace.vala
rename to src/latex-struct/AddSpace.vala
diff --git a/src/AddSpaces.vala b/src/latex-struct/AddSpaces.vala
similarity index 100%
rename from src/AddSpaces.vala
rename to src/latex-struct/AddSpaces.vala
diff --git a/src/latex-struct/CMakeLists.txt b/src/latex-struct/CMakeLists.txt
new file mode 100644
index 0000000..c376666
--- /dev/null
+++ b/src/latex-struct/CMakeLists.txt
@@ -0,0 +1,7 @@
+SET (LibName ${PROJECT_LOWERCASE_NAME})
+FILE (GLOB_RECURSE LibSources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.vala)
+SET (LibPackages gee-0.8 posix)
+SET (LibPkgModules gee-0.8)
+SET (LibExtraSources ${PROJECT_SOURCE_DIR}/src/library_constructor.c)
+SET (LibInstall ON)
+INCLUDE (ValaLibCommonRules)
diff --git a/src/Cell.vala b/src/latex-struct/Cell.vala
similarity index 100%
rename from src/Cell.vala
rename to src/latex-struct/Cell.vala
diff --git a/src/ColParam.vala b/src/latex-struct/ColParam.vala
similarity index 100%
rename from src/ColParam.vala
rename to src/latex-struct/ColParam.vala
diff --git a/src/ColParams.vala b/src/latex-struct/ColParams.vala
similarity index 100%
rename from src/ColParams.vala
rename to src/latex-struct/ColParams.vala
diff --git a/src/DocIfaces.vala b/src/latex-struct/DocIfaces.vala
similarity index 100%
rename from src/DocIfaces.vala
rename to src/latex-struct/DocIfaces.vala
diff --git a/src/Glob.vala b/src/latex-struct/Glob.vala
similarity index 100%
rename from src/Glob.vala
rename to src/latex-struct/Glob.vala
diff --git a/src/GlobParser.vala b/src/latex-struct/GlobParser.vala
similarity index 100%
rename from src/GlobParser.vala
rename to src/latex-struct/GlobParser.vala
diff --git a/src/Graphics.vala b/src/latex-struct/Graphics.vala
similarity index 100%
rename from src/Graphics.vala
rename to src/latex-struct/Graphics.vala
diff --git a/src/GraphicsParser.vala b/src/latex-struct/GraphicsParser.vala
similarity index 100%
rename from src/GraphicsParser.vala
rename to src/latex-struct/GraphicsParser.vala
diff --git a/src/Longtable.vala b/src/latex-struct/Longtable.vala
similarity index 100%
rename from src/Longtable.vala
rename to src/latex-struct/Longtable.vala
diff --git a/src/LongtableParser.vala b/src/latex-struct/LongtableParser.vala
similarity index 100%
rename from src/LongtableParser.vala
rename to src/latex-struct/LongtableParser.vala
diff --git a/src/Parser.vala b/src/latex-struct/Parser.vala
similarity index 100%
rename from src/Parser.vala
rename to src/latex-struct/Parser.vala
diff --git a/src/ParserFactory.vala b/src/latex-struct/ParserFactory.vala
similarity index 100%
rename from src/ParserFactory.vala
rename to src/latex-struct/ParserFactory.vala
diff --git a/src/Row.vala b/src/latex-struct/Row.vala
similarity index 100%
rename from src/Row.vala
rename to src/latex-struct/Row.vala
diff --git a/src/Subtable.vala b/src/latex-struct/Subtable.vala
similarity index 100%
rename from src/Subtable.vala
rename to src/latex-struct/Subtable.vala
diff --git a/src/Table.vala b/src/latex-struct/Table.vala
similarity index 100%
rename from src/Table.vala
rename to src/latex-struct/Table.vala
diff --git a/src/TableParser.vala b/src/latex-struct/TableParser.vala
similarity index 100%
rename from src/TableParser.vala
rename to src/latex-struct/TableParser.vala
diff --git a/src/Tabular.vala b/src/latex-struct/Tabular.vala
similarity index 100%
rename from src/Tabular.vala
rename to src/latex-struct/Tabular.vala
diff --git a/src/TabularParser.vala b/src/latex-struct/TabularParser.vala
similarity index 100%
rename from src/TabularParser.vala
rename to src/latex-struct/TabularParser.vala
diff --git a/src/Text.vala b/src/latex-struct/Text.vala
similarity index 100%
rename from src/Text.vala
rename to src/latex-struct/Text.vala
diff --git a/src/TextParser.vala b/src/latex-struct/TextParser.vala
similarity index 100%
rename from src/TextParser.vala
rename to src/latex-struct/TextParser.vala
diff --git a/src/main.vala b/src/latex-struct/main.vala
similarity index 100%
rename from src/main.vala
rename to src/latex-struct/main.vala
diff --git a/src/vala_unsupported.c b/src/library_constructor.c
similarity index 61%
rename from src/vala_unsupported.c
rename to src/library_constructor.c
index 5f69d31..86f9298 100644
--- a/src/vala_unsupported.c
+++ b/src/library_constructor.c
@@ -1,16 +1,16 @@
-#if defined(_WIN32)
+#if defined(_WIN32) || defined(_WIN64)
#include
#endif
#include "gettext-config.h"
-#if defined(_WIN32)
+#if defined(_WIN32) || defined(_WIN64)
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
-#elif defined (__GNUC__)
-void __attribute__ ((constructor)) laview_latex_struct_load (void)
+#elif defined(linux) || defined(UNIX) || defined(__unix__)
+void __attribute__ ((constructor)) load_library (void)
#endif
{
-#if defined(_WIN32)
+#if defined(_WIN32) || defined(_WIN64)
gchar dllPath[FILENAME_MAX],
*dllDir,
*localePath;
@@ -25,10 +25,11 @@ void __attribute__ ((constructor)) laview_latex_struct_load (void)
#if (!GLIB_CHECK_VERSION (2, 36, 0))
g_type_init ();
+#endif
- (void) dwReason;
- (void) lpReserved;
+#if defined(_WIN32) || defined(_WIN64)
+ (void) dwReason; // avoid
+ (void) lpReserved; // warngings
return TRUE;
#endif
}
-
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 7b1cdb3..a79e7b5 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,416 +1,5 @@
-INCLUDE (FindVala)
-INCLUDE (UseVala)
+ADD_SUBDIRECTORY (ltable-test)
+ADD_SUBDIRECTORY (parse-test)
+ADD_SUBDIRECTORY (split-test)
-FIND_PACKAGE (PkgConfig REQUIRED)
-
-PKG_CHECK_MODULES (GEE REQUIRED gee-0.8)
-INCLUDE_DIRECTORIES (${GEE_INCLUDE_DIRS})
-
-INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}")
-INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}/src")
-
-# add parse_test executable
-FILE (GLOB_RECURSE ParseTestSources RELATIVE ${CMAKE_SOURCE_DIR}/test ParseTest.vala)
-VALA_PRECOMPILE (ParseTest_C ${ParseTestSources}
- PACKAGES gee-0.8 posix
- OPTIONS --thread ${VALA_DEBUG}
- CUSTOM_VAPIS ${PROJECT_BINARY_DIR}/src/${PROJ_LCASE}-${MAJOR}.vapi
- GENERATE_VAPI
- GENERATE_HEADER
- )
-ADD_EXECUTABLE (ParseTest ${ParseTest_C})
-TARGET_LINK_LIBRARIES (ParseTest ${PROJ_LCASE} ${GEE_LIBRARIES})
-
-# add ltable_test executable
-FILE (GLOB_RECURSE LTableTestSources RELATIVE ${CMAKE_SOURCE_DIR}/test LTableTest.vala)
-VALA_PRECOMPILE (LTableTest_C ${LTableTestSources}
- PACKAGES gee-0.8 posix
- OPTIONS --thread ${VALA_DEBUG}
- CUSTOM_VAPIS ${PROJECT_BINARY_DIR}/src/${PROJ_LCASE}-${MAJOR}.vapi
- GENERATE_VAPI
- GENERATE_HEADER
- )
-ADD_EXECUTABLE (LTableTest ${LTableTest_C})
-TARGET_LINK_LIBRARIES (LTableTest ${PROJ_LCASE} ${GEE_LIBRARIES})
-
-# add split_test executable
-FILE (GLOB_RECURSE LTableTestSources RELATIVE ${CMAKE_SOURCE_DIR}/test SplitTest.vala)
-VALA_PRECOMPILE (SplitTest_C ${LTableTestSources}
- PACKAGES gee-0.8 posix
- OPTIONS --thread ${VALA_DEBUG}
- CUSTOM_VAPIS ${PROJECT_BINARY_DIR}/src/${PROJ_LCASE}-${MAJOR}.vapi
- GENERATE_VAPI
- GENERATE_HEADER
- )
-ADD_EXECUTABLE (SplitTest ${SplitTest_C})
-TARGET_LINK_LIBRARIES (SplitTest ${PROJ_LCASE} ${GEE_LIBRARIES})
-
-# parsing test macro
-MACRO (do_parse_test testname table_path etalon_path regexp)
- IF ("${etalon_path}" STREQUAL "")
- SET (extra_args "")
- ELSE ()
- SET (extra_args --etalon ${etalon_path})
- ENDIF ()
- ADD_TEST (ParseTest-${testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ParseTest --table ${table_path} ${extra_args})
- SET_TESTS_PROPERTIES (ParseTest-${testname}
- PROPERTIES PASS_REGULAR_EXPRESSION ${regexp}
- FAIL_REGULAR_EXPRESSION "CRITICAL;WARNING")
-ENDMACRO (do_parse_test)
-
-# test throttle.tex
-do_parse_test (throttleList ${PROJECT_SOURCE_DIR}/test/tex/throttle.tex ""
-"list all objects
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableTabular
-LAviewText
-end of objects
-
-")
-
-# test throttle.tex
-do_parse_test (includegraphicsWalk ${PROJECT_SOURCE_DIR}/test/tex/includegraphics.tex ""
-"Walk through all objects
-LAviewText
-LAviewGraphics
- width=0.000000. height=3.000000pt. path=174.
- gen..=.includegraphics.height=3.000000pt.angle=25.scale=3.{174}
-resized gen.. = .includegraphics.width=0.500000pt.height=6.000000dd.angle=25.scale=3.{174}
-LAviewText
-LAviewGraphics
- width=12.000000cm. height=25.000000cm. path=151.
- gen..=.includegraphics.width=12.000000cm.height=25.000000cm.{151}
-resized gen.. = .includegraphics.width=0.500000pt.height=50.000000dd.{151}
-LAviewText
-end of objects
-
-")
-
-# test throttle.tex
-do_parse_test (throttleCmp ${PROJECT_SOURCE_DIR}/test/tex/throttle.tex ""
-"Original and generated text are EQUAL .-.")
-
-# test throttle.tex
-do_parse_test (throttleErr1 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err1.tex ""
-"Error parsing TeX document: LAviewParsersGlobParser:33:15: : Unexpected end tag sequence '..end{longtable}' without begin tag pair.
-.end{longtable}
- .")
-
-# test throttle.tex
-do_parse_test (throttleErr2 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err2.tex ""
-"Error parsing TeX document: LAviewParsersGlobParser:33:1: Begin tag sequence '..begin{longtable}' without end tag pair.
-.begin{longtable}
-.
-")
-
-# test throttle.tex
-do_parse_test (throttleErr3 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err3.tex ""
-"Error parsing TeX document: LAviewParsersGlobParser:34:1: Error parsing subdoc.
-.begin{longtable}
-.
-LAviewParsersLongtableParser:55:46: Stop external tag sequence '..end{longtable}' without begin tag pair.
-.multicolumn{2}{|l|}{ЗМГ} & & .end{longtable} & & & & .tabularnewline
- .
-")
-
-# test throttle.tex
-do_parse_test (throttleErr4 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err4.tex ""
-"Error parsing TeX document: LAviewParsersGlobParser:33:13: : Unexpected end tag sequence '..end{tabular}' without begin tag pair.
-.end{tabular}
- .")
-
-# test throttle.tex
-do_parse_test (throttleErr5 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err5.tex ""
-"Error parsing TeX document: LAviewParsersGlobParser:33:1: Begin tag sequence '..begin{tabular}' without end tag pair.
-.begin{tabular}
-.
-")
-
-# test throttle.tex
-do_parse_test (throttleErr6 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err6.tex ""
-"Error parsing TeX document: LAviewParsersGlobParser:34:1: Error parsing subdoc.
-.begin{tabular}
-.
-LAviewParsersTabularParser:55:46: Stop external tag sequence '..end{tabular}' without begin tag pair.
-.multicolumn{2}{|l|}{ЗМГ} & & .end{tabular} & & & & .tabularnewline
- .
-")
-
-# test formular.tex
-do_parse_test (formularList ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ""
-"list all objects
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-end of objects
-
-")
-
-# test formular.tex
-do_parse_test (formularWalk ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ""
-"Walk through all objects
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-end of objects
-
-")
-
-# test formular.tex
-do_parse_test (formularCmp ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ""
-"Original and generated text are EQUAL .-.")
-
-# test formular.tex
-do_parse_test (formularErr1 ${PROJECT_SOURCE_DIR}/test/tex/formular_err1.tex ""
-"Error parsing TeX document: LAviewParsersGlobParser:192:15: : Unexpected end tag sequence '..end{longtable}' without begin tag pair.
-.end{longtable}
- .")
-
-# test formular.tex
-do_parse_test (formularErr2 ${PROJECT_SOURCE_DIR}/test/tex/formular_err2.tex ""
-"Error parsing TeX document: LAviewParsersGlobParser:44:1: Begin tag sequence '..begin{longtable}' without end tag pair.
-.begin{longtable}
-.
-")
-
-# test for caption in all_subtables.tex
-do_parse_test (captionTest ${PROJECT_SOURCE_DIR}/test/tex/all_subtables.tex ""
-".begin{document}
-.begin{longtable}{.c.c.}
-.caption{Caption of the table}
-")
-
-# test all_subtables.tex
-do_parse_test (all_subtablesCmp ${PROJECT_SOURCE_DIR}/test/tex/all_subtables.tex ""
-"Original and generated text are EQUAL .-.")
-
-# test all_subtables.tex
-do_parse_test (linesCmp ${PROJECT_SOURCE_DIR}/test/tex/lines.tex ${PROJECT_SOURCE_DIR}/test/tex/lines.etalon.tex
-"Original and generated text are EQUAL .-.")
-
-# test ltable_embedded.tex
-do_parse_test (ltable_embedded ${PROJECT_SOURCE_DIR}/test/tex/ltable_embedded.tex ""
-"Original and generated text are EQUAL .-.")
-
-# test ltable_double_embedded.tex
-do_parse_test (ltable_double_embedded ${PROJECT_SOURCE_DIR}/test/tex/ltable_double_embedded.tex ""
-"Original and generated text are EQUAL .-.")
-
-# test throttle_VK2500.tex
-do_parse_test (throttle_VK2500Cmp ${PROJECT_SOURCE_DIR}/test/tex/throttle_VK2500.tex ""
-"Original and generated text are EQUAL .-.")
-
-# test throttle_VK2500.tex
-do_parse_test (throttle_VK2500PSCmp ${PROJECT_SOURCE_DIR}/test/tex/throttle_VK2500PS.tex ""
-"Original and generated text are EQUAL .-.")
-
-# test throttle_VK2500_dos_newlines_.tex
-do_parse_test (throttle_VK2500PS_dos_newlines_ListWalk ${PROJECT_SOURCE_DIR}/test/tex/throttle_VK2500PS_dos_newlines.tex ""
-"list all objects
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-end of objects
-
-Walk through all objects
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-end of objects
-")
-
-# test graph_in_ltable.tex
-do_parse_test (graph_in_ltable ${PROJECT_SOURCE_DIR}/test/tex/graph_in_ltable.tex ""
-"
-list all objects
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableLongtable
- LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
- LAviewGraphics
- LAviewTableLongtable
-LAviewText
-end of objects
-
-Walk through all objects
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableLongtable
-LAviewText
-LAviewTableLongtable
-LAviewText
-end of objects
-")
-
-# test ltable_square_arg.tex
-do_parse_test (ltable_square_arg ${PROJECT_SOURCE_DIR}/test/tex/ltable_square_arg.tex ""
-"Original and generated text are EQUAL .-.")
-
-# test table_in_table.tex
-do_parse_test (table_in_table ${PROJECT_SOURCE_DIR}/test/tex/table_in_table.tex ""
-"
-list all objects
-")
-
-# test unary_quotes.tex
-do_parse_test (unary_quotes ${PROJECT_SOURCE_DIR}/test/tex/unary_quotes.tex ""
-"
-list all objects
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-end of objects
-
-Walk through all objects
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-LAviewTableTabular
-LAviewText
-end of objects
-")
-
-# test back_slashes_in_a_table.tex
-do_parse_test (back_slashes_in_a_table ${PROJECT_SOURCE_DIR}/test/tex/back_slashes_in_a_table.tex ${PROJECT_SOURCE_DIR}/test/tex/back_slashes_in_a_table.etalon.tex
-"Original and generated text are EQUAL .-.")
-
-# ltable_test macro
-macro (ltable_test testname tex_path1 tex_path2 operation regexp)
- add_test (ltable_test-${testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/LTableTest ${tex_path1} ${tex_path2} ${operation})
-set_tests_properties (ltable_test-${testname}
- PROPERTIES PASS_REGULAR_EXPRESSION ${regexp}
- FAIL_REGULAR_EXPRESSION "CRITICAL;WARNING")
-endmacro (ltable_test)
-
-# ltable_test rm0row
-ltable_test (rm0row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm0row.tex rm0row
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test rm1row
-ltable_test (rm1row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm1row.tex rm1row
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test rm1000row
-ltable_test (rm1000row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm1000row.tex rm1000row
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test rm_last_row
-ltable_test (rm_last_row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm_last_row.tex rm_last_row
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test clone_0_0
-ltable_test (clone_0_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_0.tex clone_0_0
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test clone_0_1
-ltable_test (clone_0_1 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_1.tex clone_0_1
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test clone_1_0
-ltable_test (clone_1_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_1_0.tex clone_1_0
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test clone_0_last
-ltable_test (clone_0_last ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_last.tex clone_0_last
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test clone_last_0
-ltable_test (clone_last_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_last_0.tex clone_last_0
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test clone_0_lastp1
-ltable_test (clone_0_lastp1 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_lastp1.tex clone_0_lastp1
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test clone_lastp1_0
-ltable_test (clone_lastp1_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_lastp1_0.tex clone_lastp1_0
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test clone_0_1000
-ltable_test (clone_0_1000 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_1000.tex clone_0_1000
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test clone_1000_0
-ltable_test (clone_1000_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_1000_0.tex clone_1000_0
-"Etalon and generated text are EQUAL .-.")
-
-# ltable_test append_row0
-ltable_test (append_row0 ${PROJECT_SOURCE_DIR}/test/tex/table_rows.tex ${PROJECT_SOURCE_DIR}/test/tex/table_rows.etalon.tex append_row0
-"Etalon and generated text are EQUAL .-.")
-
-MACRO (do_split_test testname limits table etalon regexp)
- ADD_TEST (split_test-${testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/SplitTest
- --limits ${limits} --table ${table} --etalon ${etalon})
-SET_TESTS_PROPERTIES (split_test-${testname}
- PROPERTIES PASS_REGULAR_EXPRESSION ${regexp}
- FAIL_REGULAR_EXPRESSION "CRITICAL;WARNING")
-ENDMACRO (do_split_test)
-
-# test TeXReport_splitLongtable () function
-do_split_test (split_test ${PROJECT_SOURCE_DIR}/test/tex/limits1.in
- ${PROJECT_SOURCE_DIR}/test/tex/limits_table1.tex
- ${PROJECT_SOURCE_DIR}/test/tex/limits_table1.etalon.tex
-"Etalon and generated text are EQUAL ...\n")
-
-# enable testing
-ENABLE_TESTING ()
+INCLUDE (CTest)
diff --git a/test/ltable-test/CMakeLists.txt b/test/ltable-test/CMakeLists.txt
new file mode 100644
index 0000000..e795a0a
--- /dev/null
+++ b/test/ltable-test/CMakeLists.txt
@@ -0,0 +1,88 @@
+SET (BinName ltable_test)
+FILE (GLOB_RECURSE BinSources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} LTableTest.vala)
+SET (BinPackages gee-0.8)
+SET (BinCustomVapis ${CMAKE_BINARY_DIR}/src/latex-struct/${PROJECT_LOWERCASE_NAME}-${MAJOR}.vapi)
+SET (BinLinkLibs ${PROJECT_LOWERCASE_NAME})
+INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}/src/latex-struct")
+INCLUDE (ValaBinCommonRules)
+
+# Longtable tests
+MACRO (ltable_test testname tex_path1 tex_path2 operation regexp)
+ ADD_TEST (ltable_test-${testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ltable_test ${tex_path1} ${tex_path2} ${operation})
+ SET_TESTS_PROPERTIES (ltable_test-${testname}
+ PROPERTIES PASS_REGULAR_EXPRESSION ${regexp}
+ FAIL_REGULAR_EXPRESSION "CRITICAL;WARNING")
+ENDMACRO (ltable_test)
+
+# ltable_test rm0row
+ltable_test (rm0row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm0row.tex rm0row
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-rm0row PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test rm1row
+ltable_test (rm1row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm1row.tex rm1row
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-rm1row PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test rm1000row
+ltable_test (rm1000row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm1000row.tex rm1000row
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-rm1000row PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test rm_last_row
+ltable_test (rm_last_row ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_rm_last_row.tex rm_last_row
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-rm_last_row PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test clone_0_0
+ltable_test (clone_0_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_0.tex clone_0_0
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-clone_0_0 PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test clone_0_1
+ltable_test (clone_0_1 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_1.tex clone_0_1
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-clone_0_1 PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test clone_1_0
+ltable_test (clone_1_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_1_0.tex clone_1_0
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-clone_1_0 PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test clone_0_last
+ltable_test (clone_0_last ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_last.tex clone_0_last
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-clone_0_last PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test clone_last_0
+ltable_test (clone_last_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_last_0.tex clone_last_0
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-clone_last_0 PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test clone_0_lastp1
+ltable_test (clone_0_lastp1 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_lastp1.tex clone_0_lastp1
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-clone_0_lastp1 PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test clone_lastp1_0
+ltable_test (clone_lastp1_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_lastp1_0.tex clone_lastp1_0
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-clone_lastp1_0 PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test clone_0_1000
+ltable_test (clone_0_1000 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_0_1000.tex clone_0_1000
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-clone_0_1000 PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test clone_1000_0
+ltable_test (clone_1000_0 ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ${PROJECT_SOURCE_DIR}/test/tex/ltable_clone_1000_0.tex clone_1000_0
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-clone_1000_0 PROPERTIES ENVIRONMENT "LANG=en")
+
+# ltable_test append_row0
+ltable_test (append_row0 ${PROJECT_SOURCE_DIR}/test/tex/table_rows.tex ${PROJECT_SOURCE_DIR}/test/tex/table_rows.etalon.tex append_row0
+"Etalon and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ltable_test-append_row0 PROPERTIES ENVIRONMENT "LANG=en")
+
+# enable testing
+ENABLE_TESTING ()
diff --git a/test/LTableTest.vala b/test/ltable-test/LTableTest.vala
similarity index 100%
rename from test/LTableTest.vala
rename to test/ltable-test/LTableTest.vala
diff --git a/test/parse-test/CMakeLists.txt b/test/parse-test/CMakeLists.txt
new file mode 100644
index 0000000..e6002a3
--- /dev/null
+++ b/test/parse-test/CMakeLists.txt
@@ -0,0 +1,326 @@
+SET (BinName parse_test)
+FILE (GLOB_RECURSE BinSources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ParseTest.vala)
+SET (BinPackages gee-0.8)
+SET (BinCustomVapis ${CMAKE_BINARY_DIR}/src/latex-struct/${PROJECT_LOWERCASE_NAME}-${MAJOR}.vapi)
+SET (BinLinkLibs ${PROJECT_LOWERCASE_NAME})
+INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}/src/latex-struct")
+INCLUDE (ValaBinCommonRules)
+
+# Parse tests
+MACRO (do_parse_test testname table_path etalon_path regexp)
+ IF ("${etalon_path}" STREQUAL "")
+ SET (extra_args "")
+ ELSE ()
+ SET (extra_args --etalon ${etalon_path})
+ ENDIF ()
+ ADD_TEST (ParseTest-${testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/parse_test --table ${table_path} ${extra_args})
+ SET_TESTS_PROPERTIES (ParseTest-${testname}
+ PROPERTIES PASS_REGULAR_EXPRESSION ${regexp}
+ FAIL_REGULAR_EXPRESSION "CRITICAL;WARNING")
+ENDMACRO (do_parse_test)
+
+# test throttle.tex
+do_parse_test (throttleList ${PROJECT_SOURCE_DIR}/test/tex/throttle.tex ""
+"list all objects
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableTabular
+LAviewText
+end of objects
+
+")
+SET_TESTS_PROPERTIES(ParseTest-throttleList PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle.tex
+do_parse_test (includegraphicsWalk ${PROJECT_SOURCE_DIR}/test/tex/includegraphics.tex ""
+"Walk through all objects
+LAviewText
+LAviewGraphics
+ width=0.000000. height=3.000000pt. path=174.
+ gen..=.includegraphics.height=3.000000pt.angle=25.scale=3.{174}
+resized gen.. = .includegraphics.width=0.500000pt.height=6.000000dd.angle=25.scale=3.{174}
+LAviewText
+LAviewGraphics
+ width=12.000000cm. height=25.000000cm. path=151.
+ gen..=.includegraphics.width=12.000000cm.height=25.000000cm.{151}
+resized gen.. = .includegraphics.width=0.500000pt.height=50.000000dd.{151}
+LAviewText
+end of objects
+
+")
+SET_TESTS_PROPERTIES(ParseTest-includegraphicsWalk PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle.tex
+do_parse_test (throttleCmp ${PROJECT_SOURCE_DIR}/test/tex/throttle.tex ""
+"Original and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ParseTest-throttleCmp PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle.tex
+do_parse_test (throttleErr1 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err1.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:33:15: : Unexpected end tag sequence '..end{longtable}' without begin tag pair.
+.end{longtable}
+ .")
+SET_TESTS_PROPERTIES(ParseTest-throttleErr1 PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle.tex
+do_parse_test (throttleErr2 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err2.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:33:1: Begin tag sequence '..begin{longtable}' without end tag pair.
+.begin{longtable}
+.
+")
+SET_TESTS_PROPERTIES(ParseTest-throttleErr2 PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle.tex
+do_parse_test (throttleErr3 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err3.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:34:1: Error parsing subdoc.
+.begin{longtable}
+.
+LAviewParsersLongtableParser:55:46: Stop external tag sequence '..end{longtable}' without begin tag pair.
+.multicolumn{2}{|l|}{ЗМГ} & & .end{longtable} & & & & .tabularnewline
+ .
+")
+SET_TESTS_PROPERTIES(ParseTest-throttleErr3 PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle.tex
+do_parse_test (throttleErr4 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err4.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:33:13: : Unexpected end tag sequence '..end{tabular}' without begin tag pair.
+.end{tabular}
+ .")
+SET_TESTS_PROPERTIES(ParseTest-throttleErr4 PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle.tex
+do_parse_test (throttleErr5 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err5.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:33:1: Begin tag sequence '..begin{tabular}' without end tag pair.
+.begin{tabular}
+.
+")
+SET_TESTS_PROPERTIES(ParseTest-throttleErr5 PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle.tex
+do_parse_test (throttleErr6 ${PROJECT_SOURCE_DIR}/test/tex/throttle_err6.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:34:1: Error parsing subdoc.
+.begin{tabular}
+.
+LAviewParsersTabularParser:55:46: Stop external tag sequence '..end{tabular}' without begin tag pair.
+.multicolumn{2}{|l|}{ЗМГ} & & .end{tabular} & & & & .tabularnewline
+ .
+")
+SET_TESTS_PROPERTIES(ParseTest-throttleErr6 PROPERTIES ENVIRONMENT "LANG=en")
+
+# test formular.tex
+do_parse_test (formularList ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ""
+"list all objects
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+end of objects
+
+")
+SET_TESTS_PROPERTIES(ParseTest-formularList PROPERTIES ENVIRONMENT "LANG=en")
+
+# test formular.tex
+do_parse_test (formularWalk ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ""
+"Walk through all objects
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+end of objects
+
+")
+SET_TESTS_PROPERTIES(ParseTest-formularWalk PROPERTIES ENVIRONMENT "LANG=en")
+
+# test formular.tex
+do_parse_test (formularCmp ${PROJECT_SOURCE_DIR}/test/tex/formular.tex ""
+"Original and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ParseTest-formularCmp PROPERTIES ENVIRONMENT "LANG=en")
+
+# test formular.tex
+do_parse_test (formularErr1 ${PROJECT_SOURCE_DIR}/test/tex/formular_err1.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:192:15: : Unexpected end tag sequence '..end{longtable}' without begin tag pair.
+.end{longtable}
+ .")
+SET_TESTS_PROPERTIES(ParseTest-formularErr1 PROPERTIES ENVIRONMENT "LANG=en")
+
+# test formular.tex
+do_parse_test (formularErr2 ${PROJECT_SOURCE_DIR}/test/tex/formular_err2.tex ""
+"Error parsing TeX document: LAviewParsersGlobParser:44:1: Begin tag sequence '..begin{longtable}' without end tag pair.
+.begin{longtable}
+.
+")
+SET_TESTS_PROPERTIES(ParseTest-formularErr2 PROPERTIES ENVIRONMENT "LANG=en")
+
+# test for caption in all_subtables.tex
+do_parse_test (captionTest ${PROJECT_SOURCE_DIR}/test/tex/all_subtables.tex ""
+".begin{document}
+.begin{longtable}{.c.c.}
+.caption{Caption of the table}
+")
+SET_TESTS_PROPERTIES(ParseTest-captionTest PROPERTIES ENVIRONMENT "LANG=en")
+
+# test all_subtables.tex
+do_parse_test (all_subtablesCmp ${PROJECT_SOURCE_DIR}/test/tex/all_subtables.tex ""
+"Original and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ParseTest-all_subtablesCmp PROPERTIES ENVIRONMENT "LANG=en")
+
+# test all_subtables.tex
+do_parse_test (linesCmp ${PROJECT_SOURCE_DIR}/test/tex/lines.tex ${PROJECT_SOURCE_DIR}/test/tex/lines.etalon.tex
+"Original and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ParseTest-linesCmp PROPERTIES ENVIRONMENT "LANG=en")
+
+# test ltable_embedded.tex
+do_parse_test (ltable_embedded ${PROJECT_SOURCE_DIR}/test/tex/ltable_embedded.tex ""
+"Original and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ParseTest-ltable_embedded PROPERTIES ENVIRONMENT "LANG=en")
+
+# test ltable_double_embedded.tex
+do_parse_test (ltable_double_embedded ${PROJECT_SOURCE_DIR}/test/tex/ltable_double_embedded.tex ""
+"Original and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ParseTest-ltable_double_embedded PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle_VK2500.tex
+do_parse_test (throttle_VK2500Cmp ${PROJECT_SOURCE_DIR}/test/tex/throttle_VK2500.tex ""
+"Original and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ParseTest-throttle_VK2500Cmp PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle_VK2500.tex
+do_parse_test (throttle_VK2500PSCmp ${PROJECT_SOURCE_DIR}/test/tex/throttle_VK2500PS.tex ""
+"Original and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ParseTest-throttle_VK2500PSCmp PROPERTIES ENVIRONMENT "LANG=en")
+
+# test throttle_VK2500_dos_newlines_.tex
+do_parse_test (throttle_VK2500PS_dos_newlines_ListWalk ${PROJECT_SOURCE_DIR}/test/tex/throttle_VK2500PS_dos_newlines.tex ""
+"list all objects
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+end of objects
+
+Walk through all objects
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+end of objects
+")
+SET_TESTS_PROPERTIES(ParseTest-throttle_VK2500PS_dos_newlines_ListWalk PROPERTIES ENVIRONMENT "LANG=en")
+
+# test graph_in_ltable.tex
+do_parse_test (graph_in_ltable ${PROJECT_SOURCE_DIR}/test/tex/graph_in_ltable.tex ""
+"
+list all objects
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableLongtable
+ LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+ LAviewGraphics
+ LAviewTableLongtable
+LAviewText
+end of objects
+
+Walk through all objects
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableLongtable
+LAviewText
+LAviewTableLongtable
+LAviewText
+end of objects
+")
+SET_TESTS_PROPERTIES(ParseTest-graph_in_ltable PROPERTIES ENVIRONMENT "LANG=en")
+
+# test ltable_square_arg.tex
+do_parse_test (ltable_square_arg ${PROJECT_SOURCE_DIR}/test/tex/ltable_square_arg.tex ""
+"Original and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ParseTest-ltable_square_arg PROPERTIES ENVIRONMENT "LANG=en")
+
+# test table_in_table.tex
+do_parse_test (table_in_table ${PROJECT_SOURCE_DIR}/test/tex/table_in_table.tex ""
+"
+list all objects
+")
+SET_TESTS_PROPERTIES(ParseTest-table_in_table PROPERTIES ENVIRONMENT "LANG=en")
+
+# test unary_quotes.tex
+do_parse_test (unary_quotes ${PROJECT_SOURCE_DIR}/test/tex/unary_quotes.tex ""
+"
+list all objects
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+end of objects
+
+Walk through all objects
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+LAviewTableTabular
+LAviewText
+end of objects
+")
+SET_TESTS_PROPERTIES(ParseTest-unary_quotes PROPERTIES ENVIRONMENT "LANG=en")
+
+# test back_slashes_in_a_table.tex
+do_parse_test (back_slashes_in_a_table ${PROJECT_SOURCE_DIR}/test/tex/back_slashes_in_a_table.tex ${PROJECT_SOURCE_DIR}/test/tex/back_slashes_in_a_table.etalon.tex
+"Original and generated text are EQUAL .-.")
+SET_TESTS_PROPERTIES(ParseTest-back_slashes_in_a_table PROPERTIES ENVIRONMENT "LANG=en")
+
+# enable testing
+ENABLE_TESTING ()
diff --git a/test/ParseTest.vala b/test/parse-test/ParseTest.vala
similarity index 100%
rename from test/ParseTest.vala
rename to test/parse-test/ParseTest.vala
diff --git a/test/split-test/CMakeLists.txt b/test/split-test/CMakeLists.txt
new file mode 100644
index 0000000..f517222
--- /dev/null
+++ b/test/split-test/CMakeLists.txt
@@ -0,0 +1,26 @@
+SET (BinName split_test)
+FILE (GLOB_RECURSE BinSources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} SplitTest.vala)
+SET (BinPackages gee-0.8)
+SET (BinCustomVapis ${CMAKE_BINARY_DIR}/src/latex-struct/${PROJECT_LOWERCASE_NAME}-${MAJOR}.vapi)
+SET (BinLinkLibs ${PROJECT_LOWERCASE_NAME})
+INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}/src/latex-struct")
+INCLUDE (ValaBinCommonRules)
+
+# Split tests
+MACRO (do_split_test testname limits table etalon regexp)
+ ADD_TEST (SplitTest-${testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/split_test
+ --limits ${limits} --table ${table} --etalon ${etalon})
+SET_TESTS_PROPERTIES (SplitTest-${testname}
+ PROPERTIES PASS_REGULAR_EXPRESSION ${regexp}
+ FAIL_REGULAR_EXPRESSION "CRITICAL;WARNING")
+ENDMACRO (do_split_test)
+
+# test TeXReport_splitLongtable () function
+do_split_test (split0 ${PROJECT_SOURCE_DIR}/test/tex/limits1.in
+ ${PROJECT_SOURCE_DIR}/test/tex/limits_table1.tex
+ ${PROJECT_SOURCE_DIR}/test/tex/limits_table1.etalon.tex
+"Etalon and generated text are EQUAL ...\n")
+SET_TESTS_PROPERTIES(SplitTest-split0 PROPERTIES ENVIRONMENT "LANG=en")
+
+# enable testing
+ENABLE_TESTING ()
diff --git a/test/SplitTest.vala b/test/split-test/SplitTest.vala
similarity index 100%
rename from test/SplitTest.vala
rename to test/split-test/SplitTest.vala
diff --git a/util/backbone b/util/backbone
new file mode 160000
index 0000000..aa78f6d
--- /dev/null
+++ b/util/backbone
@@ -0,0 +1 @@
+Subproject commit aa78f6d42c85f7f9a98a1a6273230a9775824fc7
diff --git a/util/update-po.sh b/util/update-po.sh
deleted file mode 100755
index 550adfa..0000000
--- a/util/update-po.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-
-##
-# settings
-##
-PROJECT=laview-latex-struct-0
-PO_DIR_NAME=po
-
-SCRIPT_PATH=`readlink -f $0`
-SCRIPT_DIR=${SCRIPT_PATH%/*}
-PRJDIR=${SCRIPT_DIR%/*}
-
-C_FILELIST="${PRJDIR}/src/*.vala"
-UI_FILELIST="${PRJDIR}/ui/*.glade"
-
-##
-# code
-##
-xgettext --language=C --escape --package-name=$PROJECT --default-domain=$PROJECT --add-comments=/// \
- -k_ -kQ_ -kC_ -kN_ -kNC_ -kg_dgettext -kg_dcgettext \
- -kg_dngettext -kg_dpgettext -kg_dpgettext2 -kg_strip_context -F -n -o \
- $PRJDIR/$PO_DIR_NAME/source.pot $C_FILELIST
-
-xgettext --language=C --escape --package-name=$PROJECT --default-domain=$PROJECT --add-comments=/// \
- -k_ -kQ_ -kC_ -kN_ -kNC_ -kg_dgettext -kg_dcgettext \
- -kg_dngettext -kg_dpgettext -kg_dpgettext2 -kg_strip_context -F -n -o \
- $PRJDIR/$PO_DIR_NAME/glade.pot $C_FILELIST
-
-msgcat -o $PRJDIR/$PO_DIR_NAME/$PROJECT.pot --use-first $PRJDIR/$PO_DIR_NAME/source.pot $PRJDIR/$PO_DIR_NAME/glade.pot
-
-rm $PRJDIR/$PO_DIR_NAME/source.pot
-rm $PRJDIR/$PO_DIR_NAME/glade.pot
-
-[ 0 != $? ] && echo "xgettext failed ;-(" && exit 1
-[ ! -e $PRJDIR/$PO_DIR_NAME/$PROJECT.pot ] && echo "No strings found ;-(" && exit 1
-
-for d in $PRJDIR/$PO_DIR_NAME/*; do
- [ ! -d $d ] && continue
-
- if [ -e $d/$PROJECT.po ]; then
- echo "Merging '${d##*/}' locale" && msgmerge -F -U $d/$PROJECT.po $PRJDIR/$PO_DIR_NAME/$PROJECT.pot
- [ 0 != $? ] && echo "msgmerge failed ;(" && exit 1
- else
- echo "Creating '${d##*/}' locale" && msginit -l ${d##*/} -o $d/$PROJECT.po -i $PRJDIR/$PO_DIR_NAME/$PROJECT.pot
- [ 0 != $? ] && echo "msginit failed ;(" && exit 1
- fi
-
-done
diff --git a/util/valadoc.sh b/util/valadoc.sh
deleted file mode 100755
index b5a62b5..0000000
--- a/util/valadoc.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-EXE_PATH="`readlink -f $0`"
-PRJ_PATH="${EXE_PATH%/*/*}"
-OUT_PATH="$PRJ_PATH/doc/html/latex-struct"
-OUT_INTERNAL_PATH="$PRJ_PATH/doc/html/latex-struct-internals"
-
-echo "Generating documentation..."
-rm -rf "$OUT_PATH"
-valadoc --no-protected -o "$OUT_PATH" -b "$PRJ_PATH/src" `find "$PRJ_PATH/src" -name "*.vapi" -or -name "*.vala"` \
- --pkg=gtk+-3.0 --pkg=gee-0.8 --pkg=gmodule-2.0 --pkg=posix
-firefox "$OUT_PATH"/latex-struct/index.htm &>/dev/null
-
-#echo "Generating internal documentation..."
-#rm -rf "$OUT_INTERNAL_PATH"
-#valadoc -o "$OUT_INTERNAL_PATH" -b "$PRJ_PATH/src" `find "$PRJ_PATH/src" -name "*.vapi" -or -name "*.vala"` \
-# --pkg=gtk+-3.0 --pkg=gee-0.8 --pkg=gmodule-2.0 --pkg=posix --internal
-
-#firefox "$OUT_INTERNAL_PATH"/latex-struct-internals/index.htm &>/dev/null
diff --git a/valadoc_env b/valadoc_env
index 2e03d6c..9464d65 100644
--- a/valadoc_env
+++ b/valadoc_env
@@ -1,2 +1,2 @@
BASEDIR=src
-PKGS=gtk+-3.0 gee-0.8 gmodule-2.0 posix
+PKGS=gee-0.8 posix