#!/usr/bin/python

# Copyright 2003 Dave Abrahams 
# Copyright 2002, 2003 Vladimir Prus 
# Distributed under the Boost Software License, Version 1.0. 
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) 

# This tests that :
#  1) the 'make' correctly assigns types to produced targets
#  2) if 'make' creates targets of type CPP, they are correctly used.

import BoostBuild

t = BoostBuild.Tester()

# In order to correctly link this app, 'b.cpp', created by a 'make' rule, should
# be compiled.

t.write("jamroot.jam", "import gcc ;")

t.write("jamfile.jam", r'''
import modules ;
if [ modules.peek : NT ]
{
    actions create 
    {
        echo int main() {} > $(<)
    }
}
else
{
    actions create 
    {
        echo "int main() {}" > $(<)
    }
}

IMPORT $(__name__) : create : : create ;

exe a : l dummy.cpp ;

# Needs to be static lib for Windows - main() cannot appear in DLL.
static-lib l : a.cpp b.cpp ;

make b.cpp : : create ;
''')

t.write("a.cpp", "")

t.write("dummy.cpp", "// msvc needs at least one object file\n")

t.run_build_system()

t.expect_addition("bin/$toolset/debug/a.exe")

t.cleanup()
