Commit Graph

272 Commits

Author SHA1 Message Date
Martchus 6300e37924 Install shared/static config 2018-02-19 19:45:07 +01:00
Martchus 486a09c1c5 Add basic template for meta info 2018-02-18 20:18:00 +01:00
Martchus 3fcbaf7fff Split shared and static configuration 2018-02-16 23:56:29 +01:00
Martchus 5950aed7ec Adjust use of llvm-cov to LLVM 5 2018-01-29 16:20:09 +01:00
Martchus 18e7154c03 Allow test target to be intended for manual testing
So those test targets which only setup an environment for
manual testing can be excluded from eg. `make check`.
2018-01-28 00:36:46 +01:00
Martchus a67805cb0f Allow providing a special include dir for build 2018-01-20 20:43:18 +01:00
Martchus 5c6207c6fa Do not try to strip header only libs 2018-01-20 17:44:14 +01:00
Martchus 9744efda70 Ensure default testfiles directory for working copy exists 2017-11-17 23:36:36 +01:00
Martchus a4e7cbd5c3 Make target 'interface_sources_for_qtcreator' unique 2017-11-16 01:59:43 +01:00
Martchus e283eea1f0 Prevent using executable of header-only lib for coverage 2017-11-15 19:13:36 +01:00
Martchus a7880e3d0c Remove *.qm files from targets when built-in translations enabled
This prevents updating *.ts files twice and in parallel leading to
build errors.
2017-11-02 00:10:06 +01:00
Martchus 2bb4aa36a4 Let tests find the testfiles from sources without extra args
Currently the path of the testfiles always had to be specified
either manually using the -p argument or by running the tests
via the build system targets. The first option is annoying and
the second option not so nice when using Qt Creator and the
debugger.

This commit allows tests to find the testfiles from the source
directory automatically (as fallback). This is achieved by
creating a file containing the path of the source directory
with CMake. Note that this file can only be found if the working
directory is set to the binary directory (default in Qt Creator).
2017-10-30 23:01:07 +01:00
Martchus 2203e0a335 Set dependencies of tidy target correctly 2017-10-24 01:01:29 +02:00
Martchus a869aa8def Do not add sources to header-only libs 2017-10-23 01:12:51 +02:00
Martchus d25265fee1 Don't add include path for config.h to header-only libs
This causes CMake errors and CMake is acutally right, it makes
no sense because the config header is only available during build
but a header-only lib is not being built.
2017-10-23 01:08:25 +02:00
Martchus cb02d5c733 Add target for building all tests
This allows to build all tests at once without
adding them to "all" target. In contrast to the
check target, the tests are not executed.
2017-10-19 16:20:49 +02:00
Martchus ae249140bc Use also actual lib name to check whether dependency is public
In accordance to 'Fix adding public Qt modules in pkg-config'
in qtutilities (b2e3506ff59ae4b610c91bd9ee96333871fa5864).
2017-10-08 20:24:48 +02:00
Martchus 472e0296d0 Fix adding public static lib dependencies 2017-10-08 19:42:55 +02:00
Martchus 05605a1b25 Filter files for tidy 2017-09-09 21:35:55 +02:00
Martchus 7754cf82d8 dependency info: Support prefixed static Qt 5 modules 2017-09-03 17:50:23 +02:00
Martchus 9c8bb44843 Fix mingw-w64 targets 2017-08-31 02:16:05 +02:00
Martchus f8c7a0a0a8 Do not set BUNDLE DESTINATION unless platform is MacOS X
Because that seems to prevent executables from being installed
when using install-binary target
2017-08-31 02:15:56 +02:00
Martchus 032111eef0 Distinguish exporting/enabling resources of static libs
Required because we now allow to provide dynamic libs as
dependencies of static libs
2017-08-31 02:15:46 +02:00
Martchus 17a08baeb5 Fix including config when building app as testlib 2017-08-30 22:53:35 +02:00
Martchus 11e2c48c06 Prevent usage of include_directories
Rather use target_include_directories
2017-08-23 23:10:05 +02:00
Martchus a475ef8693 Make creating overall test coverage depend on awk script 2017-08-17 17:59:08 +02:00
Martchus b45fe7eaeb Allow providing a shared lib as dependency for a static lib
Previously the case when the dependency of a static library
was provided by a dynamic library has not been handled
correctly leading to linker errors when building the final
application.
2017-08-06 00:35:11 +02:00
Martchus 86e12a1164 Fix include dirs for build interface
* The project directory is part of the include
  directives, eg. #include <c++utilities/...
* So the include search path must be one level
  above the project directory.
2017-08-05 18:41:41 +02:00
Martchus b7381eb55c Do not use -static under MacOS 2017-08-05 18:38:02 +02:00
Martchus 6ed336bf94 Allow specifying install destination for bundles
* Install destination for bundles can be set via
  cache variable BUNDLE_INSTALL_DESTINATION
* Default is the dir used for regular applications
2017-08-05 18:33:57 +02:00
Martchus 15bf2779c5 Make pkg-config file for both, dynamic and static target 2017-07-30 00:56:12 +02:00
Martchus e4709099d2 Prevent error in coverage target when building only static libs 2017-07-28 17:34:28 +02:00
Martchus c966e3fb1b Improve finding cppunit
* Add include dir
* Make library/include dir configurable via cache variable
2017-07-22 15:33:41 +02:00
Martchus 36b2498dd6 Allow disabling install targets
Might be useful if install targets cause
problems, eg. under MacOS
2017-07-20 01:43:10 +02:00
Martchus 326551ee02 Allow to force use of external iconv 2017-07-20 01:25:13 +02:00
Martchus 73f11eeb2a detecting 3rdparty libs: Fix overriding cache variables 2017-07-20 01:24:35 +02:00
Martchus 942c14ce3d Fix target include dirs
* Add include path of own header files for build
  and external use via imported target. Previously
  only include dirs required for external libs were
  added.
* Using global include dirs is no longer required.
* When PUBLIC_SHARED_INCLUDE_DIRS is empty, adding
  "${PUBLIC_SHARED_INCLUDE_DIRS}" to public include dirs
  does not leave INTERFACE_INCLUDE_DIRECTORIES property
  empty. Instead the source dir is added. So just don't
  use quotes here.
2017-07-11 22:02:27 +02:00
Martchus 28f76db46e Add install target for 'extra-files'
So additional files like tests/calculateoverallcoverage.awk
and coding-style.clang-format are installed and can be used
by other projects, too.
2017-07-11 19:34:38 +02:00
Martchus 442f7a9b25 Exclude generated files from coverage
* So files generated by moc or qdbusxml2cpp are not
  part of coverage statistics
* When filtering files, llvm-cov prints multiple tables
  showing coverage on function level.
  -> Generate overall coverage stats via awk.
2017-07-09 23:38:11 +02:00
Martchus 6f146072ea Allow overriding 3rd party libs/includes
So passwordfile can be told to use legacy OpenSSL
header in accordance with Qt 5 which still requires
OpenSSL 1.0
2017-07-04 22:44:32 +02:00
Martchus a4fc4024b5 Make tidy and coverage optional and disabled by default
* Prevent warnings about required tools being unavailable
  when tidy/coverage targets aren't desired anyways (eg.
  when packaging)
* Do not automatically execute tidy check when packaging
  in unclean environment
2017-06-20 23:38:45 +02:00
Martchus 57d5d04d9f Merge prof data of subprocesses created when executing tests
So coverage is accounted correctly when tests create subprocesses
of the application to be tested using execApp().
2017-06-20 23:19:49 +02:00
Martchus 1e14b09e64 Fix passing application path to tests 2017-06-19 14:15:44 +02:00
Martchus 64572e6860 Add general coverage target 2017-06-19 14:01:33 +02:00
Martchus 6807d899d2 Enable source code based coverage analysis 2017-06-18 16:17:44 +02:00
Martchus 2174dc516a Allow specifying target compile options via variable 2017-06-18 16:14:45 +02:00
Martchus 5e67a9b691 Make check target depend on .clang-format file 2017-06-01 18:24:14 +02:00
Martchus ecce539a18 Do not set global include dirs
TODO: Set include dirs on target level
2017-05-24 23:29:17 +02:00
Martchus ac348ee3b9 Find cppunit via pkg-config 2017-05-23 00:49:45 +02:00
Martchus 13ac2305d5 Allow not to link tests against cppunit 2017-05-23 00:10:27 +02:00
Martchus 04c1f98361 Format test code, too 2017-05-02 23:31:12 +02:00
Martchus 7e49d3994f Allow skipping creation of tidy target 2017-05-01 03:03:20 +02:00
Martchus 2ef55c439c Add tidy test 2017-05-01 02:57:58 +02:00
Martchus 7e0f65ed78 Call clang-format with all src files 2017-05-01 02:57:58 +02:00
Martchus b74327d961 Move creation of check target to BasicConfig.cmake
* So other tests like tidy check can be added
* Even if there are no tests after all, the
  check target shoudn't cause any problems
2017-05-01 02:57:58 +02:00
Martchus d76ead0483 Add tidy target using clang-format 2017-05-01 02:57:58 +02:00
Martchus ead0fadac3 Unset version info when not available 2017-04-15 23:33:52 +02:00
Martchus 6042336038 Allow checking whether external lib is used 2017-04-15 23:20:27 +02:00
Martchus b8c2e79e3d Use meta-data provided in CMake config for version info
* Don't set custom meta-data on targets
* It isn't exported anyways
* Remove version on application target because itcauses
  CMake to create symlinks
2017-04-15 23:02:41 +02:00
Martchus 412e725309 Append Git revision to version
* Append Git revision and ID of latest commit
  to version displayed via --help
* Can be turned off via option
* Has no effect if the source dir is not
  a Git checkout or Git is not installed
* Implements
  https://github.com/Martchus/tageditor/issues/13
2017-04-15 01:45:03 +02:00
Martchus 91e5a8b0b0 Show version of used libraries in --help
* Include only own libraries and Qt 5 modules
  so far
* First step to implement
  https://github.com/Martchus/tageditor/issues/13
2017-04-15 01:10:38 +02:00
Martchus bfa12a9870 Allow creation of header-only library
* Create interface target if only headers present
* Include workaround to show header files in Qt Creator
2017-04-14 23:30:46 +02:00
Martchus 2e0df8aa6a Allow linking only tests in 3rdParty macros
So tagparser tests can link against OpenSSL
for computing checksums
2017-04-08 18:29:21 +02:00
Martchus f86a8b3700 Fix adding dependencies of install-mingw-w64 target 2017-04-04 01:01:03 +02:00
Martchus cb82630665 Add general target for generating API doc 2017-04-04 01:00:17 +02:00
Martchus 663b31c5fe Allow skipping install targets
* via variable META_NO_INSTALL_TARGETS
* since this is just to silence some warnings
  no need to bump minor version
2017-04-01 16:18:32 +02:00
Martchus daaedb7ba3 Fix issues in TestTarget.cmake
* Fix error message
* Improve comments
* Improve target names
* Fix working directory for check target
* Add info that calling enable_testing() on root
  level is required for check target to work
* Create workingdir for tests under binary dir to
  prevent polluting source dir
2017-03-27 22:12:20 +02:00
Martchus 7b100010c2 Fix error message in ConfigHeader.cmake 2017-03-27 22:07:36 +02:00
Martchus 2965f0cd00 Improve testing applications
When LINK_TESTS_AGAINST_APP_TARGET set, create a
library in addition to the application so tests can
link against it to check particular functions. This
replaces the current approach of linking against the
application directly which lead to linker errors.
2017-03-27 11:15:14 +02:00
Martchus fdbe874bcd Allow to disable excluding tests from all target 2017-03-23 20:31:57 +01:00
Martchus 675b49f95c Add all doc files (not only first one) 2017-03-12 19:47:53 +01:00
Martchus 88196b8076 Allow creation of plugins via LibraryTarget 2017-02-20 20:03:16 +01:00
Martchus 64cc931555 Improve CMake modules 2017-02-11 02:30:46 +01:00
Martchus 9087e8da7e Fix dependency of res file for built-in translations 2017-02-09 16:22:33 +01:00
Martchus 96c4e24b6c Require C++14 2017-02-05 19:19:59 +01:00
Martchus cb3b50c28c Allow overriding default CXX_STANDARD
to ease using newer C++ features in further
projects without setting the standard manually
for each target
2017-02-04 17:44:46 +01:00
Martchus f23c381da4 Support dylib extension used under macOS 2017-01-15 17:44:23 +01:00
Martchus 36246d3895 Allow adding files for documentation only 2016-12-11 17:09:02 +01:00
Martchus 416008da1a Set compile definitions for tests 2016-11-26 13:06:27 +01:00
Martchus ade4565e0c Make Windows icon optional 2016-11-21 19:54:53 +01:00
Martchus 722e9ae590 Improve install-mingw-w64-strip target 2016-11-12 02:06:52 +01:00
Martchus b903adccdb Provide an imported target for libs 2016-11-12 02:06:52 +01:00
Martchus e09386f6ed Allow adding 'GenericName' in *.desktop file 2016-11-04 14:02:23 +01:00
Martchus e8b3f72f50 Log currently processed project 2016-11-04 10:41:16 +01:00
Martchus 6e7e87b73f Improve use of 3rd party libs 2016-10-29 00:19:47 +02:00
Martchus 77c454b304 Allow exact shared object version 2016-10-22 21:00:33 +02:00
Martchus 73d42c287c Support desktop actions and other additional desktop entries 2016-10-19 20:59:54 +02:00
Martchus 4d0807de9b Fix minor issues in build scripts 2016-09-30 23:52:00 +02:00
Martchus 00f7795dcd Link test target against neccassary libraries
In addition to previous libs, also link against
 - same libs as app/lib target
 - the app target itself if required
2016-09-20 20:52:29 +02:00
Martchus 62c0145bce Fix completion install destination 2016-09-12 00:21:36 +02:00
Martchus 34cd505bf7 Remove dependencies of install targets
Dependencies were preventing installing
static-only builds
2016-09-11 23:10:29 +02:00
Martchus 27d99f0bda Fix install destination of pkg-config files 2016-09-11 21:00:34 +02:00
Martchus 7b946864a6 Remove pthread dependency from test target 2016-09-11 20:32:59 +02:00
Martchus 7be0b15d37 Add strip targets appropriately 2016-09-11 20:32:18 +02:00
Martchus 056fad7732 Allow disabling default cropping 2016-09-06 22:53:27 +02:00
Martchus 925688bcf4 Fix messages in TemplateFinder.cmake 2016-09-06 22:52:12 +02:00
Martchus 909b5c2b57 Rename variables for enabling/disabling shared/static libs
Avoids conflicts when using mingw-w64-cmake wrapper
2016-09-06 22:51:00 +02:00
Martchus d6b08b8ed9 Fix decoration for static builds
- Also add improvemnts a few other things in the build system
2016-08-29 15:35:48 +02:00
Martchus fe4e4b2ef5 Fix issues concerning building/using static libraries
- Ensure static versions of 3rd party libs are
  found correctly
- Link tests against statically if only static
  libraries have been built
- Ensure standard lib is linked statically when
  static linkage is enabled
2016-08-19 16:14:55 +02:00
Martchus 9f68a95920 Add pkg-config file 2016-08-14 16:49:40 +02:00
Martchus 17d22be584 Support testing applications 2016-07-30 22:34:31 +02:00
Martchus a69712d30f Fix CMake module ListToString 2016-07-27 21:43:31 +02:00
Martchus 2f1f20c8c3 Generate config header in extra module 2016-07-27 21:38:40 +02:00
Martchus 323ad615cb Add macro to use iconv 2016-07-27 18:21:43 +02:00
Martchus 189a6fe6ba Approach to enable static linkage
Linking statically might be useful, especially
when linking Windows applications since MinGW
is less buggy then.
2016-07-22 01:35:32 +02:00
Martchus 8efe38dadf Improve details in the build system
- add target to run cross compiled Windows binaries with wine
- quit tests if --help has been specified
2016-07-16 23:04:22 +02:00
Martchus 18845b3ce0 Use option for CMake options 2016-07-10 00:16:43 +02:00
Martchus 03094a1f61 Add support for bash completion 2016-07-04 02:46:54 +02:00
Martchus 209b953754 Add CMake variable to control logging 2016-07-03 22:13:04 +02:00
Martchus 46edfccc8f Set TARGET_EXECUTABLE in CMake pro 2016-07-02 02:04:32 +02:00
Martchus 0cc508dc93 Add option to specify lib dir suffix 2016-06-30 17:04:07 +02:00
Martchus 757b539b95 Make install target for API doc optional 2016-06-15 21:40:03 +02:00
Martchus 980794066b Provide workaround for GCC Bug 66145 2016-06-14 22:53:19 +02:00
Martchus ca8432c5ec Use version as Doxygen project number 2016-06-11 00:54:02 +02:00
Martchus d28d477ffe Complete generation of API doc
- Use README.md for main page
- Add install target for API doc
- Improve some doc comments
2016-06-10 22:59:22 +02:00
Martchus 4d1c874b56 Add target for API doc 2016-06-10 10:24:54 +02:00
Martchus 01dee5de09 Allow creation of static libs in general 2016-05-28 01:52:55 +02:00
Martchus b3d801bca6 Fix executable path in *.desktop file 2016-05-26 21:38:19 +02:00
Martchus 2a58a83c3c Fix template paths 2016-05-23 00:04:06 +02:00
Martchus 176b81b431 set META_PROJECT_VARNAME and META_PROJECT_VARNAME_UPPER if not specified
explicitely
2016-04-21 23:57:45 +02:00
Martchus d27520af68 fixed some issues caused the build system changeings 2016-04-16 18:32:22 +02:00
Martchus bd0cbd5802 reduce code duplication in build system
- get rid of qmake project file
- provide CMake modules for common tasks
- provide templates for *.desktop files
2016-04-16 02:11:05 +02:00