1/// *************************************************************
2///
3///  Licensed to the Apache Software Foundation (ASF) under one
4///  or more contributor license agreements.  See the NOTICE file
5///  distributed with this work for additional information
6///  regarding copyright ownership.  The ASF licenses this file
7///  to you under the Apache License, Version 2.0 (the
8///  "License"); you may not use this file except in compliance
9///  with the License.  You may obtain a copy of the License at
10///
11///    http://www.apache.org/licenses/LICENSE-2.0
12///
13///  Unless required by applicable law or agreed to in writing,
14///  software distributed under the License is distributed on an
15///  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16///  KIND, either express or implied.  See the License for the
17///  specific language governing permissions and limitations
18///  under the License.
19///
20/// *************************************************************
21#include <types.h>
22
23namespace gb
24{
25    using namespace types;
26
27    class LinkTarget;
28
29    class Executable : public IsCleanable, public HasDependencies, public IsLinking, public DeliversHeaders, public HasCompileSettings, public Target
30    {
31        public:
32            Executable(String name);
33
34        private:
35            /// private helper function for the constructor
36            void Executable_impl(LinkTarget library_linktarget);
37            /// platformdependant additional setup for constructor (used on Windows only)
38            void Executable_platform(LinkTarget library_linktarget);
39            /// helper function to wrap LinkTargets functions (this is more or less pimpl ...)
40            void forward_to_linktarget(Function f);
41
42            static const List<String> TARGETTYPEFLAGS;
43    };
44}
45/* vim: set filetype=cpp : */
46