c5729b93fd2f48d5a95a4ce585b60106dea5151f
[libdcp.git] / src / wscript
1 #
2 #    Copyright (C) 2012-2020 Carl Hetherington <cth@carlh.net>
3 #
4 #    This program is free software; you can redistribute it and/or modify
5 #    it under the terms of the GNU General Public License as published by
6 #    the Free Software Foundation; either version 2 of the License, or
7 #    (at your option) any later version.
8 #
9 #    This program is distributed in the hope that it will be useful,
10 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
11 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 #    GNU General Public License for more details.
13 #
14 #    You should have received a copy of the GNU General Public License
15 #    along with this program; if not, write to the Free Software
16 #    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 #
18 #    In addition, as a special exception, the copyright holders give
19 #    permission to link the code of portions of this program with the
20 #    OpenSSL library under certain conditions as described in each
21 #    individual source file, and distribute linked combinations
22 #    including the two.
23 #
24 #    You must obey the GNU General Public License in all respects
25 #    for all of the code used other than OpenSSL.  If you modify
26 #    file(s) with this exception, you may extend this exception to your
27 #    version of the file(s), but you are not obligated to do so.  If you
28 #    do not wish to do so, delete this exception statement from your
29 #    version.  If you delete this exception statement from all source
30 #    files in the program, then also delete it here.
31 #
32
33 from waflib import TaskGen
34
35 def build(bld):
36     source = """
37              array_data.cc
38              asset.cc
39              asset_factory.cc
40              asset_writer.cc
41              atmos_asset.cc
42              atmos_asset_writer.cc
43              bitstream.cc
44              certificate_chain.cc
45              certificate.cc
46              chromaticity.cc
47              colour_conversion.cc
48              combine.cc
49              cpl.cc
50              data.cc
51              dcp.cc
52              dcp_time.cc
53              decrypted_kdm.cc
54              decrypted_kdm_key.cc
55              encrypted_kdm.cc
56              exceptions.cc
57              font_asset.cc
58              fsk.cc
59              gamma_transfer_function.cc
60              identity_transfer_function.cc
61              interop_load_font_node.cc
62              interop_subtitle_asset.cc
63              j2k_transcode.cc
64              key.cc
65              language_tag.cc
66              local_time.cc
67              locale_convert.cc
68              metadata.cc
69              modified_gamma_transfer_function.cc
70              mono_picture_asset.cc
71              mono_picture_asset_writer.cc
72              mono_picture_frame.cc
73              mxf.cc
74              name_format.cc
75              object.cc
76              openjpeg_image.cc
77              picture_asset.cc
78              picture_asset_writer.cc
79              pkl.cc
80              raw_convert.cc
81              reel.cc
82              reel_asset.cc
83              reel_atmos_asset.cc
84              reel_closed_caption_asset.cc
85              reel_file_asset.cc
86              reel_mono_picture_asset.cc
87              reel_picture_asset.cc
88              reel_markers_asset.cc
89              reel_sound_asset.cc
90              reel_stereo_picture_asset.cc
91              reel_subtitle_asset.cc
92              ref.cc
93              rgb_xyz.cc
94              s_gamut3_transfer_function.cc
95              smpte_load_font_node.cc
96              smpte_subtitle_asset.cc
97              sound_asset.cc
98              sound_asset_writer.cc
99              sound_frame.cc
100              stereo_picture_asset.cc
101              stereo_picture_asset_writer.cc
102              stereo_picture_frame.cc
103              subtitle.cc
104              subtitle_asset.cc
105              subtitle_asset_internal.cc
106              subtitle_image.cc
107              subtitle_string.cc
108              transfer_function.cc
109              types.cc
110              util.cc
111              verify.cc
112              verify_j2k.cc
113              version.cc
114              """
115
116     headers = """
117               array_data.h
118               asset.h
119               asset_reader.h
120               asset_writer.h
121               atmos_asset.h
122               atmos_asset_reader.h
123               atmos_asset_writer.h
124               atmos_frame.h
125               certificate_chain.h
126               certificate.h
127               chromaticity.h
128               colour_conversion.h
129               combine.h
130               compose.hpp
131               cpl.h
132               crypto_context.h
133               data.h
134               dcp.h
135               dcp_assert.h
136               dcp_time.h
137               decrypted_kdm.h
138               decrypted_kdm_key.h
139               encrypted_kdm.h
140               exceptions.h
141               font_asset.h
142               frame.h
143               fsk.h
144               gamma_transfer_function.h
145               identity_transfer_function.h
146               interop_load_font_node.h
147               interop_subtitle_asset.h
148               j2k_transcode.h
149               key.h
150               language_tag.h
151               load_font_node.h
152               local_time.h
153               locale_convert.h
154               metadata.h
155               mono_picture_asset.h
156               mono_picture_asset_reader.h
157               mono_picture_frame.h
158               modified_gamma_transfer_function.h
159               mxf.h
160               name_format.h
161               object.h
162               openjpeg_image.h
163               picture_asset.h
164               picture_asset_writer.h
165               pkl.h
166               raw_convert.h
167               rgb_xyz.h
168               reel.h
169               reel_asset.h
170               reel_atmos_asset.h
171               reel_closed_caption_asset.h
172               reel_file_asset.h
173               reel_markers_asset.h
174               reel_mono_picture_asset.h
175               reel_picture_asset.h
176               reel_sound_asset.h
177               reel_stereo_picture_asset.h
178               reel_subtitle_asset.h
179               ref.h
180               s_gamut3_transfer_function.h
181               smpte_load_font_node.h
182               smpte_subtitle_asset.h
183               sound_frame.h
184               sound_asset.h
185               sound_asset_reader.h
186               sound_asset_writer.h
187               stereo_picture_asset.h
188               stereo_picture_asset_reader.h
189               stereo_picture_asset_writer.h
190               stereo_picture_frame.h
191               subtitle.h
192               subtitle_asset.h
193               subtitle_image.h
194               subtitle_string.h
195               transfer_function.h
196               types.h
197               util.h
198               verify.h
199               verify_j2k.h
200               version.h
201               """
202
203     # Main library
204     if bld.env.STATIC:
205         obj = bld(features='cxx cxxstlib')
206     else:
207         obj = bld(features='cxx cxxshlib')
208     obj.name = 'libdcp%s' % bld.env.API_VERSION
209     obj.target = 'dcp%s' % bld.env.API_VERSION
210     obj.export_includes = ['.']
211     obj.uselib = 'BOOST_FILESYSTEM BOOST_SIGNALS2 BOOST_DATETIME OPENSSL SIGC++ LIBXML++ OPENJPEG CXML XMLSEC1 ASDCPLIB_CTH XERCES'
212     obj.source = source
213
214     # Library for gcov
215     if bld.is_defined('HAVE_GCOV'):
216         if bld.env.STATIC:
217             obj = bld(features='cxx cxxstlib')
218         else:
219             obj = bld(features='cxx cxxshlib')
220         obj.name = 'libdcp%s_gcov' % bld.env.API_VERSION
221         obj.target = 'dcp%s_gcov' % bld.env.API_VERSION
222         obj.export_includes = ['.']
223         obj.uselib = 'BOOST_FILESYSTEM BOOST_SIGNALS2 BOOST_DATETIME OPENSSL SIGC++ LIBXML++ OPENJPEG CXML XMLSEC1 ASDCPLIB_CTH XERCES'
224         obj.use = 'libkumu-libdcp%s libasdcp-libdcp%s' % (bld.env.API_VERSION, bld.env.API_VERSION)
225         obj.source = source
226         obj.cppflags = ['-fprofile-arcs', '-ftest-coverage', '-fno-inline', '-fno-default-inline', '-fno-elide-constructors', '-g', '-O0']
227
228     bld.install_files('${PREFIX}/include/libdcp%s/dcp' % bld.env.API_VERSION, headers)
229     if bld.env.STATIC:
230         bld.install_files('${PREFIX}/lib', 'libdcp%s.a' % bld.env.API_VERSION)