|
| 1 | +#!/usr/bin/env python3 |
| 2 | + |
| 3 | +# Copy-paste-modify from libzstd.py |
| 4 | +# Copyright (C) 2013 Steven Watanabe |
| 5 | +# Distributed under the Boost Software License, Version 1.0. |
| 6 | +# (See accompanying file LICENSE.txt or copy at |
| 7 | +# https://www.bfgroup.xyz/b2/LICENSE.txt) |
| 8 | + |
| 9 | +import BoostBuild |
| 10 | +import MockToolset |
| 11 | + |
| 12 | +t = BoostBuild.Tester(arguments=['toolset=mock', '--ignore-site-config', '--user-config='], pass_toolset=0) |
| 13 | + |
| 14 | +MockToolset.create(t) |
| 15 | + |
| 16 | +# Generic definitions that aren't configuration specific |
| 17 | +common_stuff = ''' |
| 18 | +source_file('test.cpp', 'test.cpp') |
| 19 | +source_file('main.cpp', 'int main() {}') |
| 20 | +source_file('brotli/decode.h.cpp', '#include <brotli/decode.h>\\n') |
| 21 | +action('-c -x c++ $main.cpp -o $main.o') |
| 22 | +''' |
| 23 | +t.write('test.cpp', 'test.cpp') |
| 24 | + |
| 25 | +for lib in ('brotlicommon', 'brotlidec', 'brotlienc'): |
| 26 | + |
| 27 | + # Default initialization - static library |
| 28 | + t.rm('bin') |
| 29 | + t.write("Jamroot.jam", """ |
| 30 | +path-constant here : . ; |
| 31 | +using brotli ; |
| 32 | +exe test : test.cpp /brotli//%(lib)s : : <link>static <link>shared ; |
| 33 | +""" % {'lib': lib}) |
| 34 | + |
| 35 | + MockToolset.set_expected(t, common_stuff + ''' |
| 36 | +action('$main.o --static-lib=%(lib)s -o $config.exe') |
| 37 | +action('-c -x c++ $brotli/decode.h.cpp -o $brotli/decode.h.o') |
| 38 | +action('-c -x c++ $test.cpp -o $test.o') |
| 39 | +action('$test.o --static-lib=%(lib)s -o $test') |
| 40 | +''' % {'lib': lib}) |
| 41 | + t.run_build_system() |
| 42 | + t.expect_addition('bin/mock/debug/test.exe') |
| 43 | + t.expect_addition('bin/mock/debug/link-static/test.exe') |
| 44 | + |
| 45 | + # Default initialization - shared library |
| 46 | + t.rm('bin') |
| 47 | + t.write("Jamroot.jam", """ |
| 48 | +path-constant here : . ; |
| 49 | +using brotli ; |
| 50 | +exe test : test.cpp /brotli//%(lib)s : : <link>static <link>shared ; |
| 51 | +""" % {'lib': lib}) |
| 52 | + |
| 53 | + MockToolset.set_expected(t, common_stuff + ''' |
| 54 | +action('$main.o --shared-lib=%(lib)s -o $config.exe') |
| 55 | +action('-c -x c++ $brotli/decode.h.cpp -o $brotli/decode.h.o') |
| 56 | +action('-c -x c++ $test.cpp -o $test.o') |
| 57 | +action('$test.o --shared-lib=%(lib)s -o $test') |
| 58 | +''' % {'lib': lib}) |
| 59 | + t.run_build_system() |
| 60 | + t.expect_addition('bin/mock/debug/test.exe') |
| 61 | + t.expect_addition('bin/mock/debug/link-static/test.exe') |
| 62 | + |
| 63 | + # Initialization in explicit location - static library |
| 64 | + t.rm('bin') |
| 65 | + t.write("Jamroot.jam", """ |
| 66 | +path-constant here : . ; |
| 67 | +using brotli : : <%(lib)s-name>my%(lib)s <include>$(here)/brotli <search>$(here)/brotli ; |
| 68 | +exe test : test.cpp /brotli//%(lib)s : : <link>static <link>shared ; |
| 69 | +""" % {'lib': lib}) |
| 70 | + |
| 71 | + t.write('brotli/brotli/decode.h', 'brotli') |
| 72 | + |
| 73 | + MockToolset.set_expected(t, common_stuff + ''' |
| 74 | +action('$main.o -L./brotli --static-lib=my%(lib)s -o $config.exe') |
| 75 | +action('-c -x c++ $test.cpp -I./brotli -o $test.o') |
| 76 | +action('$test.o -L./brotli --static-lib=my%(lib)s -o $test') |
| 77 | +''' % {'lib': lib}) |
| 78 | + t.run_build_system() |
| 79 | + t.expect_addition('bin/mock/debug/test.exe') |
| 80 | + t.expect_addition('bin/mock/debug/link-static/test.exe') |
| 81 | + |
| 82 | + # Initialization in explicit location - shared library |
| 83 | + t.rm('bin') |
| 84 | + t.write("Jamroot.jam", """ |
| 85 | +path-constant here : . ; |
| 86 | +using brotli : : <%(lib)s-name>my%(lib)s <include>$(here)/brotli <search>$(here)/brotli ; |
| 87 | +exe test : test.cpp /brotli//%(lib)s : : <link>static <link>shared ; |
| 88 | +""" % {'lib': lib}) |
| 89 | + |
| 90 | + MockToolset.set_expected(t, common_stuff + ''' |
| 91 | +action('$main.o -L./brotli --shared-lib=my%(lib)s -o $config.exe') |
| 92 | +action('-c -x c++ $test.cpp -I./brotli -o $test.o') |
| 93 | +action('$test.o -L./brotli --shared-lib=my%(lib)s -o $test') |
| 94 | +''' % {'lib': lib}) |
| 95 | + t.run_build_system() |
| 96 | + t.expect_addition('bin/mock/debug/test.exe') |
| 97 | + t.expect_addition('bin/mock/debug/link-static/test.exe') |
| 98 | + |
| 99 | + # Initialization in explicit location - both static and shared libraries |
| 100 | + t.rm('bin') |
| 101 | + t.write("Jamroot.jam", """ |
| 102 | +path-constant here : . ; |
| 103 | +using brotli : : <%(lib)s-name>my%(lib)s <include>$(here)/brotli <search>$(here)/brotli ; |
| 104 | +exe test : test.cpp /brotli//%(lib)s |
| 105 | + : <link>shared:<define>SHARED : <link>static <link>shared ; |
| 106 | +""" % {'lib': lib}) |
| 107 | + |
| 108 | + MockToolset.set_expected(t, common_stuff + ''' |
| 109 | +action('$main.o -L./brotli --static-lib=my%(lib)s -o $config.exe') |
| 110 | +action('$main.o -L./brotli --shared-lib=my%(lib)s -o $config.exe') |
| 111 | +action('-c -x c++ $test.cpp -I./brotli -o $test-static.o') |
| 112 | +action('-c -x c++ $test.cpp -I./brotli -DSHARED -o $test-shared.o') |
| 113 | +action('$test-static.o -L./brotli --static-lib=my%(lib)s -o $test') |
| 114 | +action('$test-shared.o -L./brotli --shared-lib=my%(lib)s -o $test') |
| 115 | +''' % {'lib': lib}) |
| 116 | + t.run_build_system() |
| 117 | + t.expect_addition('bin/mock/debug/test.exe') |
| 118 | + t.expect_addition('bin/mock/debug/link-static/test.exe') |
| 119 | + |
| 120 | +t.cleanup() |
0 commit comments