diff --git a/native_client/ctcdecode/Makefile b/native_client/ctcdecode/Makefile index c6c7fc64..60b42927 100644 --- a/native_client/ctcdecode/Makefile +++ b/native_client/ctcdecode/Makefile @@ -16,13 +16,15 @@ GENERATE_DEBUG_SYMS := endif ifeq ($(findstring _NT,$(OS)),_NT) - FIRST_PARTY := first_party.lib - THIRD_PARTY := third_party.lib + ARCHIVE_EXT := lib else - FIRST_PARTY := first_party.a - THIRD_PARTY := third_party.a + ARCHIVE_EXT := a endif +FIRST_PARTY := first_party.$(ARCHIVE_EXT) +THIRD_PARTY := third_party.$(ARCHIVE_EXT) + + all: bindings clean-keep-third-party: diff --git a/native_client/ctcdecode/build_archive.py b/native_client/ctcdecode/build_archive.py index 05e0056c..8d5773f7 100644 --- a/native_client/ctcdecode/build_archive.py +++ b/native_client/ctcdecode/build_archive.py @@ -15,7 +15,7 @@ if sys.platform.startswith('win'): DBG_ARGS = ['/Od', '/MTd', '/Zi', '/U NDEBUG', '/D DEBUG'] OPENFST_DIR = 'third_party/openfst-1.6.9-win' else: - ARGS = ['-DKENLM_MAX_ORDER=6', '-std=c++11', '-Wno-unused-local-typedefs', '-Wno-sign-compare'] + ARGS = ['fPIC', '-DKENLM_MAX_ORDER=6', '-std=c++11', '-Wno-unused-local-typedefs', '-Wno-sign-compare'] OPT_ARGS = ['-O3', '-DNDEBUG'] DBG_ARGS = ['-O0', '-g', '-UNDEBUG', '-DDEBUG'] OPENFST_DIR = 'third_party/openfst-1.6.7' @@ -51,6 +51,8 @@ CTC_DECODER_FILES = [ def build_archive(srcs=[], out_name='', build_dir='temp_build/temp_build', debug=False, num_parallel=1): compiler = os.environ.get('CXX', 'g++') + if sys.platform.startswith('win'): + compiler = '"{}"'.format(compiler) ar = os.environ.get('AR', 'ar') libtool = os.environ.get('LIBTOOL', 'libtool') cflags = os.environ.get('CFLAGS', '') + os.environ.get('CXXFLAGS', '') @@ -69,24 +71,19 @@ def build_archive(srcs=[], out_name='', build_dir='temp_build/temp_build', debug return if sys.platform.startswith('win'): - cmd = '"{cc}" -c {cflags} {args} {includes} {infile} -Fo"{outfile}"'.format( - cc=compiler, - cflags=cflags, - args=' '.join(args), - includes=' '.join('-I' + i for i in INCLUDES), - infile=file, - outfile=outfile, - ) - cmd = cmd.replace('\\', '/') + file = '"{}"'.format(file.replace('\\', '/')) + output = '/Fo"{}"'.format(outfile.replace('\\', '/')) else: - cmd = '{cc} -fPIC -c {cflags} {args} {includes} {infile} -o {outfile}'.format( - cc=compiler, - cflags=cflags, - args=' '.join(args), - includes=' '.join('-I' + i for i in INCLUDES), - infile=file, - outfile=outfile, - ) + output = '-o ' + outfile + + cmd = '{cc} -c {cflags} {args} {includes} {infile} {output}'.format( + cc=compiler, + cflags=cflags, + args=' '.join(args), + includes=' '.join('-I' + i for i in INCLUDES), + infile=file, + output=output, + ) print(cmd) subprocess.check_call(shlex.split(cmd)) return outfile @@ -103,9 +100,7 @@ def build_archive(srcs=[], out_name='', build_dir='temp_build/temp_build', debug print(cmd) subprocess.check_call(shlex.split(cmd)) elif sys.platform.startswith('win'): - obj_files = [s for s in obj_files if s != None] cmd = '"lib.exe" /OUT:"{outfile}" {infiles} /MACHINE:X64 /NOLOGO'.format( - ar=ar, outfile=out_name, infiles=' '.join(obj_files)) cmd = cmd.replace('\\', '/') diff --git a/native_client/ctcdecode/setup.py b/native_client/ctcdecode/setup.py index 248b7ba0..8a3876c9 100644 --- a/native_client/ctcdecode/setup.py +++ b/native_client/ctcdecode/setup.py @@ -54,12 +54,15 @@ def maybe_rebuild(srcs, out_name, build_dir): project_version = read('../../VERSION').strip() build_dir = 'temp_build/temp_build' + if sys.platform.startswith('win'): - third_party_build = 'third_party.lib' - ctc_decoder_build = 'first_party.lib' + archive_ext = 'lib' else: - third_party_build = 'third_party.a' - ctc_decoder_build = 'first_party.a' + archive_ext = 'a' + +third_party_build = 'third_party.{}'.format(archive_ext) +ctc_decoder_build = 'first_party.{}'.format(archive_ext) + maybe_rebuild(KENLM_FILES, third_party_build, build_dir) maybe_rebuild(CTC_DECODER_FILES, ctc_decoder_build, build_dir)