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