Commit Graph

127 Commits

Author SHA1 Message Date
irengrig 913f437994
Windows tests: each library should be in a separate directory (#90) 2018-09-12 15:37:12 +02:00
irengrig 169cdca87b
More corrections for building on Windows (#89)
* Get cc_toolchain environment variables also for linking

* Correct environment setup

* Add Windows tests for Ninja and NMake generators
2018-09-12 15:20:31 +02:00
irengrig 86ea154cd9
More windows tests corrections (#87)
* Use rlocation for artifact paths in the test shell scripts

* CMake text tests: split into lines to be good with line separators
2018-09-11 13:55:25 +02:00
irengrig 10ab431c38
Modify hello world example with CMake to build on Windows (#86)
- with MSBuild generator (the path to it should be on the PATH)
- use CMake crosstool file
2018-09-11 13:07:11 +02:00
irengrig 0aab4e65c5
Win changes (#85)
* Allow execution on Windows, use utils_win.sh, copy instead of symlink

* Prepare for execution on Windows: set up environment, convert path

also rename TMPDIR since it can clash with widely used variable
2018-09-11 11:43:13 +02:00
irengrig 3547a24075
Correct dependency on Ninja: do not depend on ninja if it is local (#84)
Also, provide a variable to put into dependencies, empty in case local ninja is installed, or containing the reference to ninja target
2018-09-10 11:54:59 +02:00
irengrig b467afc40f
Correct "use default shell environment" action argument (#83)
We should take the default PATH passed by Bazel, not that from cc_toolchain for Windows, because the PATH under msys2 is different and that is which we need for shell commands
2018-09-10 11:34:43 +02:00
irengrig 06970670ae
Correct checking the shared library to also filter out empty values (#82) 2018-09-10 11:22:39 +02:00
bbarnes52 9949b17fe2 implements pcl cmake_external build rule (#68)
* implements pcl cmake_external build rule

* Improve example with building PCL (Point Cloud Library):

- build boost library and use it as dependency
- add/correct some properties

* implements pcl cmake_external build rule

* Improve example with building PCL (Point Cloud Library):

- build boost library and use it as dependency
- add/correct some properties
2018-09-05 22:24:41 +02:00
irengrig 6f81b6e39e
fix #75 "trying to mutate a frozen object" (#79) 2018-08-31 20:11:12 +02:00
irengrig 3aecf1c664
update readme file and framework rule comments (#78) 2018-08-31 14:23:16 +02:00
irengrig f06338eafd
correct comment indent (#77) 2018-08-31 10:52:53 +02:00
irengrig bbb4bb8059
Merge CMAKE_PREFIX_PATH, passed by user, with $EXT_BUILD_DEPS (#76)
This allows using locally installed libraries to be found by CMake
+ test
2018-08-31 10:50:38 +02:00
irengrig 1b1de96220
Add comments (#74) 2018-08-30 18:32:03 +02:00
irengrig a34694a90a
do not use 'workspace' as top level package name (#73) 2018-08-30 18:08:44 +02:00
irengrig 8ef43c6f3c
make cmake and ninja build rules be available from util repository (#72) 2018-08-30 17:31:02 +02:00
irengrig 595c9b6d4b
correct CMake script test to use cmake path from workspace definition (#71) 2018-08-30 13:50:12 +02:00
irengrig 515c15a392
Add a feature of generating CMake toolchain file and writing tools and flags information there (#70)
* cmake toolchain files support

* extract cmake script consruction code into a separate file

for further testing

* simplify cmake script creation code

* first four tests for CMake script creation functions

* + move_dict_values_test for CMake script creation functions

* + reverse_descriptor_dict_test for CMake script creation functions

* + toolchain_and_user_values_test for CMake script creation functions

* add create_cmake_script_no_toolchain_file_test for CMake script creation

* do not insert executable linker rule option if it uses cxx compiler

since it would be the same as default
add one more test for command line

* add test for cmake script with toolchain file

* add test for cmake script with toolchain file with user values

* propagate information about target into CMake toolchain file
2018-08-30 13:12:51 +02:00
irengrig 86b28882a2
correct work in osx: take environment from cc_common (#67)
apparently, is it possible to just take the needed environment variables from cc_common, and not do any calls to rules_apple or platform-dependent initialization
2018-08-28 13:36:20 +02:00
irengrig 97b339b91e
escape quotes in toolchain flags and variables (#66) 2018-08-28 11:52:10 +02:00
irengrig 9e9a4eec93
cleanup workspace_definitions.bzl (#65) 2018-08-27 15:27:26 +02:00
irengrig 4e57ad01d0
try install cmake on ci (#64) 2018-08-27 14:59:16 +02:00
irengrig a46bef4945
make framework function work on apple: (#63)
- initialize apple tools on workspace level properly using universal install_ws_dependency() function
- pass proper environment variables to the shell script action
- pass proper hidden attributes to framework function rules in case of osx os
- also, clean up WORKSPACE file putting example repositories into a separate file
- correct: repositories needed by framework function itself should be defined in the same single function in workspace_definitions.bzl
- unfortunately, it is not possible to move android initialization anywhere from WORKSPACE file
2018-08-27 14:56:16 +02:00
irengrig ccec08efd1
create repository rule for loading and initializing (#62) 2018-08-27 14:54:04 +02:00
irengrig af0871023c
updte example to show out_include_dir usage (#61) 2018-08-24 11:28:34 +02:00
irengrig ebfaafdc32
do not try to build cmake from sources for now (#60) 2018-08-22 22:58:29 +02:00
irengrig b382ac435e
add pcl library targets - not ready yet (#59)
more dependencies need to be provided
2018-08-22 22:30:29 +02:00
irengrig 125432bffe
do not build cmake but default (if not CI) (#58) 2018-08-22 22:20:16 +02:00
irengrig d4880f8fac
build cmake if it is missing (should be configurable) (#57) 2018-08-22 22:06:37 +02:00
irengrig 322e81086b
correct linking for osx, use basename (#56) 2018-08-22 16:02:18 +02:00
irengrig 2c46ed501d
correct linking for osx (#55) 2018-08-22 15:31:16 +02:00
irengrig 3983fc9c4b
create non-temporal directory fir build deps (#54)
+ small corrections
2018-08-22 15:15:53 +02:00
irengrig e711ddb2f0
do not follow links when copy ninja sources (#53) 2018-08-22 14:51:27 +02:00
irengrig 600078f283
use different shell utils file depending on the platform (#52) 2018-08-22 14:31:01 +02:00
irengrig cefeeaf82d
add nghttp2 example with test (#51) 2018-08-22 10:22:56 +02:00
irengrig 7865d29bb4
use Skylark definition of http_archive (#50) 2018-08-22 10:16:44 +02:00
irengrig 51e2fac3d8
C ares test (#48)
* c-ares to be built with CMake+Ninja, c-ares version test

* remove not relevant comment
2018-08-21 15:04:12 +02:00
irengrig deffd0d10c
correct finding the root of the filegroup/tree artifact, and path (#47) 2018-08-21 14:59:42 +02:00
irengrig 4a391ddbf6
correct replace in files (#46) 2018-08-21 14:45:32 +02:00
irengrig 04791568c5
Add cares build (#45) 2018-08-20 22:45:35 +02:00
irengrig eb8f2a461c
Add ninja tool as the separate rule + version test (#44) 2018-08-20 22:24:42 +02:00
irengrig 8590cb0da8
Add building example with pybind11 (#43)
- demonstrates loading CMake scripts from externally built library for use in the dependent external library CMake build
2018-08-20 21:41:16 +02:00
irengrig cfa5c56f23
Add build libgd example, add it to tests (#42)
Unfortunately, many additional variables needed to make CMake find libraries.
2018-08-20 21:22:45 +02:00
irengrig 3dd96c7a14
Important refactoring of the $EXT_BUILD_DEPS directory structure. (#41)
Some libraries define not only C/C++ libraries and headers, but also
scripts for finding this libraries (pkg_config, CMake find/config scripts).
Another important use case is defining CMake functions to be used in the CMake build of the dependent targets.
As for CMake such scripts are searched for in the number of directory path combinations, relative to CMAKE_INSTALL_PREFIX, including for both Unix and Windows,
<prefix>/<name>*/(lib/<arch>|lib|share)/cmake/<name>*/          (W/U)
<prefix>/<name>*/(lib/<arch>|lib|share)/<name>*/                (W/U)
<prefix>/<name>*/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/  (W/U)

acceptable solution would be copying the whole CMake install directory under the dependencies root $EXT_BUILD_DEPS, which is passed as CMAKE_INSTALL_PREFIX.

For the libraries, which put their CMake scripts into some other paths, user can add copy command using postfix_script parameter.

To be documented better.
2018-08-20 18:47:49 +02:00
irengrig af3f730c22
allow headers-only libraries (#40) 2018-08-20 17:39:35 +02:00
irengrig 45419956f5
correct utils.sh: in symlinking directory contents check if file passed (#39)
In that case, the file itself should be linked to the target directory
It shows up if we depend on the library, which provides only header files,
and no information on the wrapping directory. Technically it is correct, but
then our linking script should be prepared to link individual files as well as wrapping directories.
Example: cc_import of header-only library.
2018-08-20 17:00:13 +02:00
irengrig 85b4e59103
correct bugs with shared and interface libs in cc_toolchain_util.bzl (#38) 2018-08-20 16:46:24 +02:00
irengrig 840796ef4d
remove debug print (#37) 2018-08-20 16:00:27 +02:00
irengrig 8989362236
install prefix: indicate relative value with "./" (#36)
Unfortunately, the prefix is never relative.
If the relative value is passed, current directory is used as base,
and the real prefix is $(pwd)/<relative-prefix>
However, keep any value, passed by user, as finally outside the build that value can be used.
2018-08-20 15:56:35 +02:00
irengrig 6a0af905db
cmake env vars and cache entries: fix dictionary keys checks (#35) 2018-08-20 15:51:52 +02:00