c2a669a9f0
Many contributors (me included) did not fully understand what CCFLAGS, CXXFLAGS and CPPFLAGS refer to exactly, and were thus not using them in the way they are intended to be. As per the SCons manual: https://www.scons.org/doc/HTML/scons-user/apa.html - CCFLAGS: General options that are passed to the C and C++ compilers. - CFLAGS: General options that are passed to the C compiler (C only; not C++). - CXXFLAGS: General options that are passed to the C++ compiler. By default, this includes the value of $CCFLAGS, so that setting $CCFLAGS affects both C and C++ compilation. - CPPFLAGS: User-specified C preprocessor options. These will be included in any command that uses the C preprocessor, including not just compilation of C and C++ source files [...], but also [...] Fortran [...] and [...] assembly language source file[s]. TL;DR: Compiler options go to CCFLAGS, unless they must be restricted to either C (CFLAGS) or C++ (CXXFLAGS). Preprocessor defines go to CPPFLAGS.
244 lines
7.9 KiB
Python
244 lines
7.9 KiB
Python
#!/usr/bin/env python
|
|
|
|
Import('env')
|
|
Import('env_modules')
|
|
|
|
stub = True
|
|
|
|
env_opus = env_modules.Clone()
|
|
|
|
# Thirdparty source files
|
|
if env['builtin_opus']:
|
|
thirdparty_dir = "#thirdparty/opus/"
|
|
|
|
thirdparty_sources = [
|
|
|
|
# Sync with opus_sources.mk
|
|
"opus.c",
|
|
"opus_decoder.c",
|
|
"opus_encoder.c",
|
|
"opus_multistream.c",
|
|
"opus_multistream_encoder.c",
|
|
"opus_multistream_decoder.c",
|
|
"repacketizer.c",
|
|
|
|
"analysis.c",
|
|
"mlp.c",
|
|
"mlp_data.c",
|
|
|
|
# Sync with libopusfile Makefile.am
|
|
"info.c",
|
|
"internal.c",
|
|
"opusfile.c",
|
|
"stream.c",
|
|
|
|
# Sync with celt_sources.mk
|
|
"celt/bands.c",
|
|
"celt/celt.c",
|
|
"celt/celt_encoder.c",
|
|
"celt/celt_decoder.c",
|
|
"celt/cwrs.c",
|
|
"celt/entcode.c",
|
|
"celt/entdec.c",
|
|
"celt/entenc.c",
|
|
"celt/kiss_fft.c",
|
|
"celt/laplace.c",
|
|
"celt/mathops.c",
|
|
"celt/mdct.c",
|
|
"celt/modes.c",
|
|
"celt/pitch.c",
|
|
"celt/celt_lpc.c",
|
|
"celt/quant_bands.c",
|
|
"celt/rate.c",
|
|
"celt/vq.c",
|
|
#"celt/arm/arm_celt_map.c",
|
|
#"celt/arm/armcpu.c",
|
|
#"celt/arm/celt_ne10_fft.c",
|
|
#"celt/arm/celt_ne10_mdct.c",
|
|
#"celt/arm/celt_neon_intr.c",
|
|
|
|
# Sync with silk_sources.mk
|
|
"silk/CNG.c",
|
|
"silk/code_signs.c",
|
|
"silk/init_decoder.c",
|
|
"silk/decode_core.c",
|
|
"silk/decode_frame.c",
|
|
"silk/decode_parameters.c",
|
|
"silk/decode_indices.c",
|
|
"silk/decode_pulses.c",
|
|
"silk/decoder_set_fs.c",
|
|
"silk/dec_API.c",
|
|
"silk/enc_API.c",
|
|
"silk/encode_indices.c",
|
|
"silk/encode_pulses.c",
|
|
"silk/gain_quant.c",
|
|
"silk/interpolate.c",
|
|
"silk/LP_variable_cutoff.c",
|
|
"silk/NLSF_decode.c",
|
|
"silk/NSQ.c",
|
|
"silk/NSQ_del_dec.c",
|
|
"silk/PLC.c",
|
|
"silk/shell_coder.c",
|
|
"silk/tables_gain.c",
|
|
"silk/tables_LTP.c",
|
|
"silk/tables_NLSF_CB_NB_MB.c",
|
|
"silk/tables_NLSF_CB_WB.c",
|
|
"silk/tables_other.c",
|
|
"silk/tables_pitch_lag.c",
|
|
"silk/tables_pulses_per_block.c",
|
|
"silk/VAD.c",
|
|
"silk/control_audio_bandwidth.c",
|
|
"silk/quant_LTP_gains.c",
|
|
"silk/VQ_WMat_EC.c",
|
|
"silk/HP_variable_cutoff.c",
|
|
"silk/NLSF_encode.c",
|
|
"silk/NLSF_VQ.c",
|
|
"silk/NLSF_unpack.c",
|
|
"silk/NLSF_del_dec_quant.c",
|
|
"silk/process_NLSFs.c",
|
|
"silk/stereo_LR_to_MS.c",
|
|
"silk/stereo_MS_to_LR.c",
|
|
"silk/check_control_input.c",
|
|
"silk/control_SNR.c",
|
|
"silk/init_encoder.c",
|
|
"silk/control_codec.c",
|
|
"silk/A2NLSF.c",
|
|
"silk/ana_filt_bank_1.c",
|
|
"silk/biquad_alt.c",
|
|
"silk/bwexpander_32.c",
|
|
"silk/bwexpander.c",
|
|
"silk/debug.c",
|
|
"silk/decode_pitch.c",
|
|
"silk/inner_prod_aligned.c",
|
|
"silk/lin2log.c",
|
|
"silk/log2lin.c",
|
|
"silk/LPC_analysis_filter.c",
|
|
"silk/LPC_inv_pred_gain.c",
|
|
"silk/table_LSF_cos.c",
|
|
"silk/NLSF2A.c",
|
|
"silk/NLSF_stabilize.c",
|
|
"silk/NLSF_VQ_weights_laroia.c",
|
|
"silk/pitch_est_tables.c",
|
|
"silk/resampler.c",
|
|
"silk/resampler_down2_3.c",
|
|
"silk/resampler_down2.c",
|
|
"silk/resampler_private_AR2.c",
|
|
"silk/resampler_private_down_FIR.c",
|
|
"silk/resampler_private_IIR_FIR.c",
|
|
"silk/resampler_private_up2_HQ.c",
|
|
"silk/resampler_rom.c",
|
|
"silk/sigm_Q15.c",
|
|
"silk/sort.c",
|
|
"silk/sum_sqr_shift.c",
|
|
"silk/stereo_decode_pred.c",
|
|
"silk/stereo_encode_pred.c",
|
|
"silk/stereo_find_predictor.c",
|
|
"silk/stereo_quant_pred.c",
|
|
]
|
|
|
|
opus_sources_silk = []
|
|
|
|
if env["platform"] in ["android", "iphone", "javascript"]:
|
|
env_opus.Append(CPPFLAGS=["-DFIXED_POINT"])
|
|
opus_sources_silk = [
|
|
"silk/fixed/LTP_analysis_filter_FIX.c",
|
|
"silk/fixed/LTP_scale_ctrl_FIX.c",
|
|
"silk/fixed/corrMatrix_FIX.c",
|
|
"silk/fixed/encode_frame_FIX.c",
|
|
"silk/fixed/find_LPC_FIX.c",
|
|
"silk/fixed/find_LTP_FIX.c",
|
|
"silk/fixed/find_pitch_lags_FIX.c",
|
|
"silk/fixed/find_pred_coefs_FIX.c",
|
|
"silk/fixed/noise_shape_analysis_FIX.c",
|
|
"silk/fixed/prefilter_FIX.c",
|
|
"silk/fixed/process_gains_FIX.c",
|
|
"silk/fixed/regularize_correlations_FIX.c",
|
|
"silk/fixed/residual_energy16_FIX.c",
|
|
"silk/fixed/residual_energy_FIX.c",
|
|
"silk/fixed/solve_LS_FIX.c",
|
|
"silk/fixed/warped_autocorrelation_FIX.c",
|
|
"silk/fixed/apply_sine_window_FIX.c",
|
|
"silk/fixed/autocorr_FIX.c",
|
|
"silk/fixed/burg_modified_FIX.c",
|
|
"silk/fixed/k2a_FIX.c",
|
|
"silk/fixed/k2a_Q16_FIX.c",
|
|
"silk/fixed/pitch_analysis_core_FIX.c",
|
|
"silk/fixed/vector_ops_FIX.c",
|
|
"silk/fixed/schur64_FIX.c",
|
|
"silk/fixed/schur_FIX.c",
|
|
]
|
|
else:
|
|
opus_sources_silk = [
|
|
"silk/float/apply_sine_window_FLP.c",
|
|
"silk/float/corrMatrix_FLP.c",
|
|
"silk/float/encode_frame_FLP.c",
|
|
"silk/float/find_LPC_FLP.c",
|
|
"silk/float/find_LTP_FLP.c",
|
|
"silk/float/find_pitch_lags_FLP.c",
|
|
"silk/float/find_pred_coefs_FLP.c",
|
|
"silk/float/LPC_analysis_filter_FLP.c",
|
|
"silk/float/LTP_analysis_filter_FLP.c",
|
|
"silk/float/LTP_scale_ctrl_FLP.c",
|
|
"silk/float/noise_shape_analysis_FLP.c",
|
|
"silk/float/prefilter_FLP.c",
|
|
"silk/float/process_gains_FLP.c",
|
|
"silk/float/regularize_correlations_FLP.c",
|
|
"silk/float/residual_energy_FLP.c",
|
|
"silk/float/solve_LS_FLP.c",
|
|
"silk/float/warped_autocorrelation_FLP.c",
|
|
"silk/float/wrappers_FLP.c",
|
|
"silk/float/autocorrelation_FLP.c",
|
|
"silk/float/burg_modified_FLP.c",
|
|
"silk/float/bwexpander_FLP.c",
|
|
"silk/float/energy_FLP.c",
|
|
"silk/float/inner_product_FLP.c",
|
|
"silk/float/k2a_FLP.c",
|
|
"silk/float/levinsondurbin_FLP.c",
|
|
"silk/float/LPC_inv_pred_gain_FLP.c",
|
|
"silk/float/pitch_analysis_core_FLP.c",
|
|
"silk/float/scale_copy_vector_FLP.c",
|
|
"silk/float/scale_vector_FLP.c",
|
|
"silk/float/schur_FLP.c",
|
|
"silk/float/sort_FLP.c",
|
|
]
|
|
|
|
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources + opus_sources_silk]
|
|
|
|
# also requires libogg
|
|
if env['builtin_libogg']:
|
|
env_opus.Append(CPPPATH=["#thirdparty/libogg"])
|
|
|
|
env_opus.Append(CPPFLAGS=["-DHAVE_CONFIG_H"])
|
|
|
|
thirdparty_include_paths = [
|
|
"",
|
|
"celt",
|
|
"opus",
|
|
"silk",
|
|
"silk/fixed",
|
|
"silk/float",
|
|
]
|
|
env_opus.Append(CPPPATH=[thirdparty_dir + "/" + dir for dir in thirdparty_include_paths])
|
|
|
|
if env["platform"] == "android":
|
|
if ("android_arch" in env and env["android_arch"] in ["armv6", "armv7"]):
|
|
env_opus.Append(CPPFLAGS=["-DOPUS_ARM_OPT"])
|
|
elif ("android_arch" in env and env["android_arch"] == "arm64v8"):
|
|
env_opus.Append(CPPFLAGS=["-DOPUS_ARM64_OPT"])
|
|
elif env["platform"] == "iphone":
|
|
if ("arch" in env and env["arch"] == "arm"):
|
|
env_opus.Append(CPPFLAGS=["-DOPUS_ARM_OPT"])
|
|
elif ("arch" in env and env["arch"] == "arm64"):
|
|
env_opus.Append(CPPFLAGS=["-DOPUS_ARM64_OPT"])
|
|
|
|
env_thirdparty = env_opus.Clone()
|
|
env_thirdparty.disable_warnings()
|
|
env_thirdparty.add_source_files(env.modules_sources, thirdparty_sources)
|
|
|
|
if not stub:
|
|
# Module files
|
|
env_opus.add_source_files(env.modules_sources, "*.cpp")
|
|
else:
|
|
# Module files
|
|
env_opus.add_source_files(env.modules_sources, "stub/register_types.cpp")
|