Next bunch of fixes, including unused, non-consts and statics hunting. Also improves cmake-based installation on MacOS (default data path and rpath).master
| target_link_libraries( | target_link_libraries( | ||||
| espeak-ng-bin PRIVATE espeak-ng espeak-ng-config | espeak-ng-bin PRIVATE espeak-ng espeak-ng-config | ||||
| ) | ) | ||||
| set_target_properties( | |||||
| espeak-ng-bin PROPERTIES | |||||
| MACOSX_RPATH ON | |||||
| INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" | |||||
| ) | |||||
| if (MINGW) | if (MINGW) | ||||
| target_link_options(espeak-ng-bin PRIVATE "-static-libstdc++" "-static") | target_link_options(espeak-ng-bin PRIVATE "-static-libstdc++" "-static") | ||||
| endif() | endif() |
| espeak_api.c | espeak_api.c | ||||
| ) | ) | ||||
| set_target_properties( | |||||
| espeak-ng PROPERTIES | |||||
| MACOSX_RPATH ON | |||||
| INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" | |||||
| ) | |||||
| target_include_directories(espeak-ng BEFORE PRIVATE $<TARGET_PROPERTY:espeak-include,INTERFACE_INCLUDE_DIRECTORIES>) | target_include_directories(espeak-ng BEFORE PRIVATE $<TARGET_PROPERTY:espeak-include,INTERFACE_INCLUDE_DIRECTORIES>) | ||||
| target_compile_definitions(espeak-ng INTERFACE "LIBESPEAK_NG_EXPORT=1") | target_compile_definitions(espeak-ng INTERFACE "LIBESPEAK_NG_EXPORT=1") | ||||
| endif() | endif() | ||||
| target_compile_definitions(espeak-ng PRIVATE "PATH_ESPEAK_DATA=\"${CMAKE_INSTALL_PREFIX}/share/espeak-ng-data\"") | |||||
| if (USE_ASYNC) | if (USE_ASYNC) | ||||
| target_sources(espeak-ng PRIVATE | target_sources(espeak-ng PRIVATE | ||||
| event.c | event.c |
| 0x50, 0x5a, 0x64, 0x70, 0x7c, 0x83, 0x85, 0x88, 0x8a, 0x8c, 0x8e, 0x8f, 0x91, 0x92, 0x93, 0x93 | 0x50, 0x5a, 0x64, 0x70, 0x7c, 0x83, 0x85, 0x88, 0x8a, 0x8c, 0x8e, 0x8f, 0x91, 0x92, 0x93, 0x93 | ||||
| }; | }; | ||||
| const unsigned char *envelope_data[N_ENVELOPE_DATA] = { | |||||
| const unsigned char *const envelope_data[N_ENVELOPE_DATA] = { | |||||
| env_fall, env_fall, | env_fall, env_fall, | ||||
| env_rise, env_rise, | env_rise, env_rise, | ||||
| env_frise, env_r_frise, | env_frise, env_r_frise, | ||||
| #define PRIMARY_LAST 7 | #define PRIMARY_LAST 7 | ||||
| static int number_pre; | static int number_pre; | ||||
| static int number_body; | |||||
| static int number_tail; | static int number_tail; | ||||
| static int last_primary; | static int last_primary; | ||||
| static int tone_posn; | static int tone_posn; | ||||
| int max_stress_posn2 = 0; // penuntimate syllable of the highest stress | int max_stress_posn2 = 0; // penuntimate syllable of the highest stress | ||||
| number_pre = -1; // number of vowels before 1st primary stress | number_pre = -1; // number of vowels before 1st primary stress | ||||
| number_body = 0; | |||||
| number_tail = 0; // number between tonic syllable and next primary | number_tail = 0; // number between tonic syllable and next primary | ||||
| last_primary = -1; | last_primary = -1; | ||||
| break; | break; | ||||
| } | } | ||||
| case V_TUNES: { | case V_TUNES: { | ||||
| char names[6][40] = { 0, 0, 0, 0, 0, 0 }; | |||||
| char names[6][40] = { {0}, {0}, {0}, {0}, {0}, {0} }; | |||||
| n = sscanf(keyValue, "%s %s %s %s %s %s", names[0], names[1], names[2], names[3], names[4], names[5]); | n = sscanf(keyValue, "%s %s %s %s %s %s", names[0], names[1], names[2], names[3], names[4], names[5]); | ||||
| translator->langopts.intonation_group = 0; | translator->langopts.intonation_group = 0; | ||||
| int c1 = ' '; // current character | int c1 = ' '; // current character | ||||
| int c2; // next character | int c2; // next character | ||||
| int cprev = ' '; // previous character | int cprev = ' '; // previous character | ||||
| int c_next; | |||||
| int c_next = 0; | |||||
| int parag; | int parag; | ||||
| int ix = 0; | int ix = 0; | ||||
| int j; | int j; |
| MBROLA_TAB *pr; | MBROLA_TAB *pr; | ||||
| PHONEME_TAB *other_ph; | PHONEME_TAB *other_ph; | ||||
| bool found = false; | bool found = false; | ||||
| static int mnem; | |||||
| int mnem; | |||||
| // control | // control | ||||
| // bit 0 skip the next phoneme | // bit 0 skip the next phoneme |
| #define PITCHfall 0 // standard pitch envelopes | #define PITCHfall 0 // standard pitch envelopes | ||||
| #define PITCHrise 2 | #define PITCHrise 2 | ||||
| #define N_ENVELOPE_DATA 20 | #define N_ENVELOPE_DATA 20 | ||||
| extern const unsigned char *envelope_data[N_ENVELOPE_DATA]; | |||||
| extern const unsigned char *const envelope_data[N_ENVELOPE_DATA]; | |||||
| extern int formant_rate[]; // max rate of change of each formant | extern int formant_rate[]; // max rate of change of each formant | ||||
| extern SPEED_FACTORS speed; | extern SPEED_FACTORS speed; |
| char phonemes_name[40] = ""; | char phonemes_name[40] = ""; | ||||
| const char *language_type; | const char *language_type; | ||||
| char buf[sizeof(path_home)+30]; | char buf[sizeof(path_home)+30]; | ||||
| #if USE_MBROLA | |||||
| char name1[40]; | char name1[40]; | ||||
| char name2[80]; | char name2[80]; | ||||
| #endif | |||||
| int pitch1; | int pitch1; | ||||
| int pitch2; | int pitch2; |
| public: | public: | ||||
| FrameManagerImpl(): curFrame(), curFrameIsNULL(true), sampleCounter(0), newFrameRequest(NULL), lastUserIndex(-1) { | |||||
| FrameManagerImpl(): newFrameRequest(NULL), curFrame(), curFrameIsNULL(true), sampleCounter(0), lastUserIndex(-1) { | |||||
| oldFrameRequest=new frameRequest_t(); | oldFrameRequest=new frameRequest_t(); | ||||
| oldFrameRequest->NULLFrame=true; | oldFrameRequest->NULLFrame=true; | ||||
| } | } |
| unsigned int generate(const unsigned int sampleCount, sample* sampleBuf) { | unsigned int generate(const unsigned int sampleCount, sample* sampleBuf) { | ||||
| if(!frameManager) return 0; | if(!frameManager) return 0; | ||||
| double val=0; | |||||
| for(unsigned int i=0;i<sampleCount;++i) { | for(unsigned int i=0;i<sampleCount;++i) { | ||||
| const speechPlayer_frame_t* frame=frameManager->getCurrentFrame(); | const speechPlayer_frame_t* frame=frameManager->getCurrentFrame(); | ||||
| if(frame) { | if(frame) { |