#*************************************************************************/
#*                                                                       */
#*                  Language Technologies Institute                      */
#*                     Carnegie Mellon University                        */
#*                        Copyright (c) 2017                             */
#*                        All Rights Reserved.                           */
#*                                                                       */
#*  Permission is hereby granted, free of charge, to use and distribute  */
#*  this software and its documentation without restriction, including   */
#*  without limitation the rights to use, copy, modify, merge, publish,  */
#*  distribute, sublicense, and/or sell copies of this work, and to      */
#*  permit persons to whom this work is furnished to do so, subject to   */
#*  the following conditions:                                            */
#*   1. The code must retain the above copyright notice, this list of    */
#*      conditions and the following disclaimer.                         */
#*   2. Any modifications must be clearly marked as such.                */
#*   3. Original authors' names are not deleted.                         */
#*   4. The authors' names are not used to endorse or promote products   */
#*      derived from this software without specific prior written        */
#*      permission.                                                      */
#*                                                                       */
#*  CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK         */
#*  DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING      */
#*  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT   */
#*  SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE      */
#*  FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    */
#*  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN   */
#*  AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,          */
#*  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF       */
#*  THIS SOFTWARE.                                                       */
#*                                                                       */
#*************************************************************************/

config("suppress-pointer-to-int") {
  visibility = [ ":*" ]
  cflags = [ "-Wno-pointer-to-int-cast" ]
}

source_set("flite") {
  deps = []

  include_dirs = [
    ".",
    "include/",
    "lang/usenglish/",
    "lang/cmulex/",
  ]

  defines = [
    "FL_LANG=\"usenglish\"",
    "FL_VOX=\"cmu_us_kal\"",
    "FL_LEX=\"cmulex\"",
    "langvox=\"default\"",
  ]

  sources = [
    "fuchsia/fuchsia_voice.c",
    "src/audio/au_command.c",
    "src/audio/au_none.c",
    "src/audio/au_streaming.c",
    "src/audio/audio.c",
    "src/cg/cst_cg.c",
    "src/cg/cst_cg_dump_voice.c",
    "src/cg/cst_cg_load_voice.c",
    "src/cg/cst_cg_map.c",
    "src/cg/cst_mlpg.c",
    "src/cg/cst_mlsa.c",
    "src/cg/cst_spamf0.c",
    "src/cg/cst_vc.c",
    "src/hrg/cst_ffeature.c",
    "src/hrg/cst_item.c",
    "src/hrg/cst_rel_io.c",
    "src/hrg/cst_relation.c",
    "src/hrg/cst_utterance.c",

    ## ------------------------------------------

    "lang/cmu_us_slt/cmu_us_slt.c",
    "lang/cmu_us_slt/cmu_us_slt_cg.c",
    "lang/cmu_us_slt/cmu_us_slt_cg_durmodel.c",
    "lang/cmu_us_slt/cmu_us_slt_cg_f0_trees.c",
    "lang/cmu_us_slt/cmu_us_slt_cg_phonestate.c",
    "lang/cmu_us_slt/cmu_us_slt_cg_single_mcep_trees.c",
    "lang/cmu_us_slt/cmu_us_slt_cg_single_params.c",
    "lang/cmu_us_slt/cmu_us_slt_spamf0_accent.c",
    "lang/cmu_us_slt/cmu_us_slt_spamf0_accent_params.c",
    "lang/cmu_us_slt/cmu_us_slt_spamf0_phrase.c",
    "lang/cmulex/cmu_lex.c",
    "lang/cmulex/cmu_lex_data.c",
    "lang/cmulex/cmu_lex_entries.c",
    "lang/cmulex/cmu_lts_model.c",
    "lang/cmulex/cmu_lts_rules.c",
    "lang/cmulex/cmu_postlex.c",
    "lang/usenglish/us_aswd.c",
    "lang/usenglish/us_dur_stats.c",
    "lang/usenglish/us_durz_cart.c",
    "lang/usenglish/us_expand.c",
    "lang/usenglish/us_f0_model.c",
    "lang/usenglish/us_f0lr.c",
    "lang/usenglish/us_ffeatures.c",
    "lang/usenglish/us_gpos.c",
    "lang/usenglish/us_int_accent_cart.c",
    "lang/usenglish/us_int_tone_cart.c",
    "lang/usenglish/us_nums_cart.c",
    "lang/usenglish/us_phoneset.c",
    "lang/usenglish/us_phrasing_cart.c",
    "lang/usenglish/us_pos_cart.c",
    "lang/usenglish/us_text.c",
    "lang/usenglish/usenglish.c",

    ## ------------------------------------------

    "src/lexicon/cst_lexicon.c",
    "src/lexicon/cst_lts.c",
    "src/lexicon/cst_lts_rewrites.c",
    "src/regex/cst_regex.c",
    "src/regex/regexp.c",
    "src/regex/regsub.c",
    "src/speech/cst_lpcres.c",
    "src/speech/cst_track.c",
    "src/speech/cst_track_io.c",
    "src/speech/cst_wave.c",
    "src/speech/cst_wave_io.c",
    "src/speech/cst_wave_utils.c",
    "src/speech/g721.c",
    "src/speech/g723_24.c",
    "src/speech/g723_40.c",
    "src/speech/g72x.c",
    "src/speech/rateconv.c",
    "src/stats/cst_cart.c",
    "src/stats/cst_ss.c",
    "src/stats/cst_viterbi.c",
    "src/synth/cst_ffeatures.c",
    "src/synth/cst_phoneset.c",
    "src/synth/cst_ssml.c",
    "src/synth/cst_synth.c",
    "src/synth/cst_utt_utils.c",
    "src/synth/cst_voice.c",
    "src/synth/flite.c",
    "src/utils/cst_alloc.c",
    "src/utils/cst_args.c",
    "src/utils/cst_endian.c",
    "src/utils/cst_error.c",
    "src/utils/cst_features.c",
    "src/utils/cst_file_stdio.c",
    "src/utils/cst_mmap_none.c",
    "src/utils/cst_socket.c",
    "src/utils/cst_string.c",
    "src/utils/cst_tokenstream.c",
    "src/utils/cst_url.c",
    "src/utils/cst_val.c",
    "src/utils/cst_val_const.c",
    "src/utils/cst_val_user.c",
    "src/utils/cst_wchar.c",
    "src/wavesynth/cst_clunits.c",
    "src/wavesynth/cst_diphone.c",
    "src/wavesynth/cst_reflpc.c",
    "src/wavesynth/cst_sigpr.c",
    "src/wavesynth/cst_sts.c",
    "src/wavesynth/cst_units.c",
  ]

  configs += [ "//build/config:symbol_visibility_hidden" ]
  configs -= [ "//build/config:symbol_visibility_hidden" ]
  configs += [ "//build/config:default_warnings" ]
  configs -= [ "//build/config:default_warnings" ]
  configs += [ "//build/config/fuchsia:werror" ]
  configs -= [ "//build/config/fuchsia:werror" ]
  configs += [ "//build/config:werror" ]
  configs -= [ "//build/config:werror" ]
  configs += [ ":suppress-pointer-to-int" ]
}
