summaryrefslogtreecommitdiff
path: root/CMake
Commit message (Collapse)AuthorAgeFilesLines
* CMake: Translations: Pass --previous to msgmergeJulian Andres Klode2016-08-191-1/+1
| | | | | | | | When updating our .po files, pass --previous to msgmerge to make it easier for translators to translate fuzzy strings. Thanks: Guillem Jover for the suggestion.
* CMake: Translations: Don't rebuild .mo for line number changesJulian Andres Klode2016-08-191-1/+4
| | | | | | | | | | If only the line numbers changed in a file without any of the translatable strings changing, the .po and .mo files were rebuilt, making building simple code changes somewhat annoying. We can work around this by passing --add-location=file to msgcomm when we are creating the temporary .pot file used for building the .mo files.
* CMake: Use COPYONLY instead of @ONLYJulian Andres Klode2016-08-111-1/+1
| | | | | | I don't know what happened back in 2009 when I wrote this, but it seems I used the wrong option. These files should not have any variable substitution done to them.
* Add statvfs.h.in to CMake directoryJulian Andres Klode2016-08-101-0/+13
| | | | Gbp-Dch: ignore
* CMake: Rewrite existing Documentation support and add doxygenJulian Andres Klode2016-08-102-92/+259
| | | | | | | | | | | | | | | | | | | | | | | | This can now build all documentation. It should also be fairly reusable for other projects, as long as they follow the same naming scheme for the po4a output files and set the PACKAGE_* variables used here. We could have done all translations in a single call to po4a like the makefile based buildsystem does. While that would have made the output slightly nicer, this solution offers a huge performance gain because it can translate the documents in parallel, which also means that the xsltproc stage does not have to wait for all translations to be done first. You might think that the add_custom_command() should list the actual output files as BYPRODUCTS. This is not true however: Because the files are not always generated, Ninja will think missing byproducts mean that the target is out of date - which is not what we want. Finally, also add the missing doxygen support. Note that the packaging script cleans up some md5 and map files created by doxygen, otherwise it is fairly boring.
* CMake: Misc: Extract command path_join() from TranslationsJulian Andres Klode2016-08-102-14/+11
| | | | | | | This abstracts the joining of paths a bit better than having basically the same code twice in the Translations module. Gbp-Dch: ignore
* CMake: Check for ptsname_r() againJulian Andres Klode2016-08-101-0/+3
| | | | | | | | This was dropped in autotools as I found no use of the HAVE_PTSNAME_R macro. Turns out it was typoed as HAVE_PTS_NAME_R. Fix the #ifdef and add checks to CMake for it. Closes: #833674
* CMake: Translations: Build .pot in po binary dir, not project oneJulian Andres Klode2016-08-101-17/+17
| | | | | | This was cluttering up things all over the place. Gbp-Dch: ignore
* CMake: Translations: Allow excluding languages from translationJulian Andres Klode2016-08-101-4/+19
| | | | | | This seems to be needed for the hebrew translations. Gbp-Dch: ignore
* CMake: Translations: Avoid rebuilding .mo if .pot did not changeJulian Andres Klode2016-08-101-4/+21
| | | | | | | | | | | | | | | | | | | | | Use the witness/byproducts approach to build the translations. A byproduct of a command is like an output, but may be older than the input. Here, we generate a normal template with headers in the normal way as a witness (and for Launchpad translations), but we also generate a .pot-tmp0 template file without a header that gets copied to a .pot-tmp byproduct only if it changed. This way, the .pot-tmp is only updated if an actual string translation changed. We also create a custom target for the .pot file that we'll depend on later in the overall target creating the mo files to ensure that the template is build before we try to build mo files. Then we make the msgmerge depend on the .pot-tmp instead of the .pot file, which means that msgmerge and msgfmt only get re-run if a string change occured. Gbp-Dch: ignore
* CMake: Translations: Add a statistics targetJulian Andres Klode2016-08-101-0/+14
| | | | | | This is really useful stuff to have. Gbp-Dch: ignore
* CMake: Translations: Build apt-all.pot and update .po filesJulian Andres Klode2016-08-101-2/+44
| | | | | | | | | | | | | Merge all the per-domain templates into one template file using msgcomm, stripping any line numbers in the input files, and sorting the output per file. This should create reasonably stable .pot and .po files that do not change just because files move around. It should also be resilient against some line changes, as long as one translated line is not moved before/after another translated line. Gbp-Dch: ignore
* CMake: Translations: Add support for shell scriptsJulian Andres Klode2016-08-101-6/+48
| | | | | | | | | | | | | | | | | | | | Rework the arguments to apt_add_translation_domain so a user can specify TARGETS and SCRIPTS, the latter being Shell scripts. For each language (TARGETS being C++, SCRIPTS being Shell), a separate template is generated via xgettext. Those templates are then merged together by using msgcomm. In case there are no Shell scripts in the translation domain, msgcomm will receive /dev/null instead of a shell translation template. This also reintroduces line numbers, as msgcomm would otherwise re-order the merged files not only by filename, but also by message string. It's unclear why it does that, it could just leave strings within a file alone. In contrast to the old build system, we use xgettext for shell scripts instead of bash --dump-strings, as it's just easier to use the same tool for everything. We also create valid headers.
* CMake: Translations: Write a .po file before writing a .mo fileJulian Andres Klode2016-08-101-3/+6
| | | | | | This makes debugging things easier. Gbp-Dch: ignore
* CMake: Translations: Pass some additional arguments to commandsJulian Andres Klode2016-08-101-1/+2
| | | | | | | | This gets rid of the line numbers, adds the plural keyword, and makes msgfmt print statistics, so we know how well translated we are. Gbp-Dch: ignore
* CMake: Translations: Make po templates depend on input filesJulian Andres Klode2016-08-101-0/+3
| | | | | | | I wondered why the template was not rebuilt after I changed a file, now I have the answer. Gbp-Dch: ignore
* CMake: Set PACKAGE_MAIL variableJulian Andres Klode2016-08-101-1/+1
| | | | | | | This is needed in a lot of places. Also adjust config.h.in to use it instead of the bare email address. Gbp-Dch: ignore
* CMake: Improve handling of vendor filesJulian Andres Klode2016-08-102-8/+30
| | | | | | | | | | | | | | | | | First of all, instead of creating the files at configure time, generate the files using normal target. This has the huge advantage that they are rebuilt if their input changes. While we are at it, also add dependencies on the vendor entity files. This also fixes the path to the vendor script, which was given relatively before, which obviously won't work when running from inside a deeper subdirectory. To speed things up, pass the --vendor option to getinfo, so we do not have to find out the current vendor in getinfo all over again. Gbp-Dch: ignore
* CMake: Add initial support for documentation buildingJulian Andres Klode2016-08-061-0/+134
| | | | | | | | | | Build HTML docbook guides (untranslated) and manual pages (including translations). Also install the examples in the example subdirectory. Translation of docbook guides has not been implemented yet, but should be easy to do. The code also needs some cleanup to automatically detect the available translations.
* CMake: Add support for building and installing .mo filesJulian Andres Klode2016-08-061-0/+53
| | | | | | | | | | | | | | Introduce support for building translation domain-specific templates, merging them with the translations, and building a language-specific .mo file. The invocation of xgettext is done in the project source directory, not in the current source directory, and all paths are made relative to the project root, in order to have clean templates. This only supports the C++ source code for now, it unfortunately does not handle the shell scripts of deselect yet.
* CMake: Add basic CMake build systemJulian Andres Klode2016-08-064-0/+197
Introduce an initial CMake buildsystem. This build system can build a fully working apt system without translation or documentation. The FindBerkelyDB module is from kdelibs, with some small adjustements to also look in db5 directories. Initial work on this CMake build system started in 2009, and was resumed in August 2016.