#*************************************************************************/
#*                                                                       */
#*                  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.                                                       */
#*                                                                       */
#*************************************************************************/

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/audio.c",
    "src/audio/au_command.c",
    "src/audio/au_none.c",
    "src/audio/au_streaming.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/usenglish.c",
    "lang/usenglish/us_f0_model.c",
    "lang/usenglish/us_int_accent_cart.c",
    "lang/usenglish/us_phoneset.c",
    "lang/usenglish/us_text.c",
    "lang/usenglish/us_dur_stats.c",
    "lang/usenglish/us_expand.c",
    "lang/usenglish/us_ffeatures.c",
    "lang/usenglish/us_int_tone_cart.c",
    "lang/usenglish/us_phrasing_cart.c",
    "lang/usenglish/us_durz_cart.c",
    "lang/usenglish/us_f0lr.c",
    "lang/usenglish/us_gpos.c",
    "lang/usenglish/us_nums_cart.c",
    "lang/usenglish/us_pos_cart.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:default_warnings"]
  configs -= [ "//build/config/fuchsia:werror" ]

}
