2 * Copyright (C) 2005 Trevor McCort
3 * Copyright (C) 2005 Casper S. Hornstrup
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 #include "../backend.h"
48 class MSVCConfiguration
51 MSVCConfiguration(const OptimizationType optimization
,
52 const HeadersType headers
= MSVCHeaders
,
53 const std::string
&name
= "");
54 virtual ~MSVCConfiguration() {}
56 OptimizationType optimization
;
60 class MSVCBackend
: public Backend
64 MSVCBackend(Project
&project
,
65 Configuration
& configuration
);
66 virtual ~MSVCBackend() {}
68 virtual void Process();
72 void ProcessModules();
73 void ProcessFile(std::string
&filename
);
75 bool CheckFolderAdded(std::string
&folder
);
76 void AddFolders(std::string
&folder
);
79 void OutputFileUnits();
81 std::string
DspFileName ( const Module
& module
) const;
82 std::string
VcprojFileName ( const Module
& module
) const;
83 std::string
DswFileName ( const Module
& module
) const;
84 std::string
SlnFileName ( const Module
& module
) const;
85 std::string
OptFileName ( const Module
& module
) const;
86 std::string
SuoFileName ( const Module
& module
) const;
87 std::string
NcbFileName ( const Module
& module
) const;
89 std::vector
<MSVCConfiguration
*> m_configurations
;
91 std::vector
<FileUnit
> m_fileUnits
;
92 std::vector
<std::string
> m_folders
;
100 // functions in msvcmaker.cpp:
102 void _generate_dsp ( const Module
& module
);
103 void _generate_dsw_header ( FILE* OUT
);
104 void _generate_dsw_project (
106 const Module
& module
,
107 std::string dsp_file
,
108 const std::vector
<Dependency
*>& dependencies
);
110 void _generate_dsw_footer ( FILE* OUT
);
111 void _generate_wine_dsw ( FILE* OUT
);
113 // functions in vcprojmaker.cpp:
115 std::string
_strip_gcc_deffile(std::string Filename
, std::string sourcedir
, std::string objdir
);
116 std::string
_get_solution_version ( void );
117 std::string
_get_studio_version ( void );
118 std::string
_gen_guid();
119 std::string
_replace_str(
121 const std::string
&find_str
,
122 const std::string
&replace_str
);
124 std::string
_get_vc_dir ( void ) const;
126 void _generate_vcproj ( const Module
& module
);
128 void _generate_sln_header ( FILE* OUT
);
129 void _generate_sln_footer ( FILE* OUT
);
130 void _generate_sln ( FILE* OUT
);
131 //void _generate_rules_file ( FILE* OUT );
132 void _generate_sln_project (
134 const Module
& module
,
135 std::string vcproj_file
,
136 std::string sln_guid
,
137 std::string vcproj_guid
,
138 const std::vector
<Library
*>& libraries
);
139 void _generate_sln_configurations (
141 std::string vcproj_guid
);
142 void _clean_project_files ( void );
143 void _get_object_files ( const Module
& module
, std::vector
<std::string
>& out
) const;
144 void _get_def_files ( const Module
& module
, std::vector
<std::string
>& out
) const;
145 void _install_files ( const std::string
& vcdir
, const std::string
& config
);
146 bool _copy_file ( const std::string
& inputname
, const std::string
& targetname
) const;
147 const Property
* _lookup_property ( const Module
& module
, const std::string
& name
) const;