Skip to content

Commit

Permalink
Fix some issues with clang
Browse files Browse the repository at this point in the history
  • Loading branch information
brummer10 committed Apr 13, 2024
1 parent 4d49bae commit 3964866
Show file tree
Hide file tree
Showing 11 changed files with 341 additions and 300 deletions.
544 changes: 272 additions & 272 deletions trunk/libgxw/gxw/GxKnob.cpp

Large diffs are not rendered by default.

3 changes: 1 addition & 2 deletions trunk/src/LV2/DSP/gx_resampler.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,12 @@ class FixedRateResampler {
private:
Resampler r_up, r_down;
int inputRate, outputRate;
int last_in_count;
public:
int setup(int _inputRate, int _outputRate);
int up(int count, float *input, float *output);
void down(float *input, float *output);
int max_out_count(int in_count) {
return static_cast<int>(ceil((in_count*static_cast<double>(outputRate))/inputRate)); }
return static_cast<int>(ceil((in_count*static_cast<double>(outputRate))/inputRate)); }
};

class SimpleResampler
Expand Down
2 changes: 1 addition & 1 deletion trunk/src/LV2/faust-generated/gxechocat.cc
Original file line number Diff line number Diff line change
Expand Up @@ -746,7 +746,7 @@ void always_inline Dsp::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *outpu
double fTemp61 = fVec14[(IOTA0 - iTemp15) & 1048575];
double fTemp62 = fVec14[(IOTA0 - iTemp19) & 1048575];
double fTemp63 = fVec14[(IOTA0 - iTemp23) & 1048575];
double fTemp64 = fSlow8 * (fTemp63 - fRec28[0] * (fTemp63 - fVec14[(IOTA0 - iTemp22) & 1048575])) + fSlow6 * (fTemp62 + fRec24[0] * (fVec14[(IOTA0 - iTemp18) & 1048575] - fTemp62)) + fSlow4 * (fTemp61 - fRec20[0] * (fTemp61 - fVec14[(IOTA0 - iTemp14) & 1048575]));
double fTemp64 = fSlow8 * (fTemp63 - fRec28[0] * (fTemp63 - fVec14[(IOTA0 - iTemp22) & 1048575])) + fSlow6 * (fTemp62 - fRec24[0] * (fTemp62 - fVec14[(IOTA0 - iTemp18) & 1048575])) + fSlow4 * (fTemp61 - fRec20[0] * (fTemp61 - fVec14[(IOTA0 - iTemp14) & 1048575]));
fVec15[0] = fTemp64;
fRec67[0] = -(fConst100 * (fConst99 * fRec67[1] - fConst97 * (fTemp64 + fVec15[1])));
fRec66[0] = fRec67[0] + 0.995 * fRec66[1] - fRec67[1];
Expand Down
9 changes: 7 additions & 2 deletions trunk/src/LV2/gx_aclipper.lv2/wscript
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,22 @@ def configure(conf):
def build(bld):
lv2_base = 'gx_aclipper'

if any('clang' not in s for s in bld.env["CXX"]):
gccflags = ['-Wl,-z,noexecstack','-Wl,-z,relro,-z,now','-Wl,--exclude-libs,ALL']
else:
gccflags = []

bld.lv2(
lv2_base = lv2_base,
source = ['gx_aclipper.cpp'],
includes = ['../faust','./', '../DSP'],
cxxflags=['-fvisibility=hidden','-Wl,-z,noexecstack','-Wl,-z,relro,-z,now','-Wl,--exclude-libs,ALL'],
cxxflags=['-fvisibility=hidden'] + gccflags,
use = ['LV2CORE','GX_RESAMPLER'],
)
bld.lv2_gui(
lv2_base = lv2_base,
source = ' gx_aclipper_ui.cpp',
includes = ['../xputty/header','../xputty/header/widgets','../xputty/resources','../xputty/lv2_plugin'],
cxxflags=['-fvisibility=hidden','-Wl,-z,noexecstack','-Wl,-z,relro,-z,now','-Wl,--exclude-libs,ALL'],
cxxflags=['-fvisibility=hidden'] + gccflags,
use = ['xcairo','X11', 'CAIRO','LV2CORE'],
)
9 changes: 7 additions & 2 deletions trunk/src/LV2/wscript
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,11 @@ def build(bld):
if not bld.env.LV2:
return

if any('clang' not in s for s in bld.env["CXX"]):
gccflags = ['-Wl,--exclude-libs,ALL']
else:
gccflags = []

bld.recurse('faust')
bld.recurse('xputty/resources')
bld.add_group()
Expand All @@ -121,12 +126,12 @@ def build(bld):
bld.objects(name='GX_CONVOLVER',
source='DSP/gx_convolver.cc',
includes='DSP',
cxxflags=['-fvisibility=hidden','-fPIC','-Wl,--exclude-libs,ALL'],
cxxflags=['-fvisibility=hidden','-fPIC'] + gccflags,
use=['ZITA_CONVOLVER','GX_RESAMPLER'],
)
bld.objects(name='GX_RESAMPLER',
source='DSP/gx_resampler.cc',
cxxflags=['-fvisibility=hidden','-fPIC','-Wl,--exclude-libs,ALL'],
cxxflags=['-fvisibility=hidden','-fPIC'] + gccflags,
use=['ZITA_RESAMPLER'],
)

Expand Down
3 changes: 2 additions & 1 deletion trunk/src/NAM/wscript
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ def build(bld):
cxx_flags = ["-std=c++17", "-Wno-sign-compare", "-Ofast"]

if not bld.env['LTO']:
cxx_flags.append ("-fno-fat-lto-objects")
if any('clang' not in s for s in bld.env["CXX"]):
cxx_flags.append ("-fno-fat-lto-objects")

bld.stlib(
name = 'libnam',
Expand Down
3 changes: 2 additions & 1 deletion trunk/src/RTNeural/wscript
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ def build(bld):
]

if not bld.env['LTO']:
cxx_flags.append ("-fno-fat-lto-objects")
if any('clang' not in s for s in bld.env["CXX"]):
cxx_flags.append ("-fno-fat-lto-objects")

bld.stlib(
name = 'librtneural',
Expand Down
6 changes: 3 additions & 3 deletions trunk/src/gx_head/engine/gx_internal_plugins.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2128,7 +2128,7 @@ void NeuralAmpMulti::compute(int count, float *input0, float *output0)
}
if (need_bresample == 1) {
ReCountb = smpb.up(count, bufb, bufb1);
} else if (need_aresample == 2) {
} else if (need_bresample == 2) {
smpb.down(bufb, bufb1);
} else {
memcpy(bufb1, bufb, ReCountb * sizeof(float));
Expand Down Expand Up @@ -2236,7 +2236,7 @@ void NeuralAmpMulti::load_nam_bfile() {

if (modelb) {
if (modelb->HasLoudness()) loudnessb = modelb->GetLoudness();
mbSampleRate = static_cast<int>(modela->GetExpectedSampleRate());
mbSampleRate = static_cast<int>(modelb->GetExpectedSampleRate());
//model->SetLoudness(-15.0);
if (mbSampleRate <= 0) mbSampleRate = 48000;
if (mbSampleRate > fSampleRate) {
Expand Down Expand Up @@ -2646,7 +2646,7 @@ void RtNeuralMulti::compute(int count, float *input0, float *output0)
}
if (need_bresample == 1) {
ReCountb = smpb.up(count, bufb, bufb1);
} else if (need_aresample == 2) {
} else if (need_bresample == 2) {
smpb.down(bufb, bufb1);
} else {
memcpy(bufb1, bufb, ReCountb * sizeof(float));
Expand Down
8 changes: 8 additions & 0 deletions trunk/src/gx_head/gui/machine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,14 @@ void lock_rt_memory() {
{ __rt_text__start, __rt_text__end - __rt_text__start },
{ __rt_data__start, __rt_data__end - __rt_data__start },
};
#ifndef NDEBUG
long int total_size = 0;
#endif
set_memory_allocation();
for (unsigned int i = 0; i < sizeof(regions)/sizeof(regions[0]); i++) {
#ifndef NDEBUG
total_size +=regions[i].len;
#endif
if (mlock(regions[i].start, regions[i].len) != 0) {
gx_print_error(
"system init",
Expand All @@ -95,9 +99,13 @@ void unlock_rt_memory() {
{ __rt_text__start, __rt_text__end - __rt_text__start },
{ __rt_data__start, __rt_data__end - __rt_data__start },
};
#ifndef NDEBUG
long int total_size = 0;
#endif
for (unsigned int i = 0; i < sizeof(regions)/sizeof(regions[0]); i++) {
#ifndef NDEBUG
total_size +=regions[i].len;
#endif
if (munlock(regions[i].start, regions[i].len) != 0) {
gx_print_error(
"system init",
Expand Down
30 changes: 22 additions & 8 deletions trunk/waftools/cpu_optimization.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os
import re

def options(opt):
comp = opt.get_option_group("Configuration options")
Expand Down Expand Up @@ -60,7 +61,15 @@ def check_cloop(conf):
}
"""
msg = "Checking for libcloog-ppl0"
conf.check_cxx(msg = msg, fragment=code, cxxflags=[ '-O3', '-ftree-loop-linear'], define_name="NOOPT")
conf.check_cxx(msg = msg, fragment=code, cxxflags=[ '-O3', '-ftree-loop-linear'], define_name="NOOPT", mandatory=0)

def check_v3 (conf):
if conf.env['IS_LINUX']:
s = conf.cmd_and_log('/usr/lib64/ld-linux-x86-64.so.2'+' --help | grep x86-64-v3', quiet=True)
if "x86-64-v3" in s:
return True
return False


def append_optimization_flags(conf, cxxflags):
cpu_model = None
Expand All @@ -84,7 +93,9 @@ def append_optimization_flags(conf, cxxflags):
return None
model = cpu_model.split()
arch = os.uname()[4]
if "AMD" in model and "x86_64" in arch:
if check_v3(conf):
cxxflags.append ("-march=x86-64-v3")
elif "AMD" in model and "x86_64" in arch:
cxxflags.append ("-march=k8")
elif "AMD" in model and "Sempron(tm)" in model:
cxxflags.append ("-march=native")
Expand Down Expand Up @@ -140,13 +151,15 @@ def append_optimization_flags(conf, cxxflags):

if not conf.options.debug:
cxxflags.append ("-fomit-frame-pointer")
cxxflags.append ("-ftree-loop-linear")
if conf.env['NOOPT']:
cxxflags.append ("-ftree-loop-linear")
#cxxflags.append ("-ffinite-math-only")
cxxflags.append ("-fno-math-errno")
cxxflags.append ("-fno-signed-zeros")
#cxxflags.append ("-ffast-math") # quicker but doesn't seem to work (difference in sound output)
#cxxflags.append ("-malign-double")
cxxflags.append ("-fstrength-reduce")
if any('clang' not in s for s in conf.env["CXX"]):
cxxflags.append ("-fstrength-reduce")
cxxflags.append ("-pipe")
return cpu_model

Expand All @@ -164,13 +177,14 @@ def configure(conf):
cpu_model = None
if opt.optimization:
check_cloop(conf)
if conf.env['NOOPT']:
conf.env['OPT'] = False
cpu_model = append_optimization_flags(conf, cxxflags)
#if conf.env['NOOPT']:
conf.env['OPT'] = False
cpu_model = append_optimization_flags(conf, cxxflags)

if any(x.startswith('-flto') for x in cxxflags):
conf.env['LTO'] = True
cxxflags.append ("-ffat-lto-objects")
if any('clang' not in s for s in conf.env["CXX"]):
cxxflags.append ("-ffat-lto-objects")

cxxflags.append ("-std=c++17")
# cxxflags.append ("-Ofast")
Expand Down
24 changes: 16 additions & 8 deletions trunk/wscript
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ Options.OptionsContext.gxload = \
Build.BuildContext.gxload = \
lambda ctx, tool: ctx.load(tool, tooldir='waftools')

check_in_faust_version = '2.69.3' # this Faust should be used for checked in generated files
other_faust_versions = ['2.37.3', '2.33.1', '2.30.5','2.40.0', '2.54.9', '2.60.3','2.68.1'] # other Faust versions known to work
check_in_faust_version = '2.70.3' # this Faust should be used for checked in generated files
other_faust_versions = ['2.37.3', '2.33.1', '2.30.5','2.40.0', '2.54.9', '2.60.3','2.68.1','2.69.3'] # other Faust versions known to work

g_maxlen = 40 # maximum width of message for 2-column display

Expand Down Expand Up @@ -301,12 +301,15 @@ def configure(conf):
conf.env['LINKFLAGS'] = conf.env['LDFLAGS']

# os specific: common settings
conf.env['OS_LV2_CXXFLAGS'] = ['-fvisibility=hidden','-Wl,--exclude-libs,ALL']
conf.env['OS_LV2_CXXFLAGS'] = ['-fvisibility=hidden']
if any('clang' not in s for s in conf.env["CXX"]):
conf.env.append_value('OS_LV2_CXXFLAGS',['-Wl,--exclude-libs,ALL'])
conf.env['OS_SNDFILE_CFGFLAGS'] = ['--cflags','--libs','sndfile >= 1.0.17']
conf.env['OS_CAIRO_CFGFLAGS'] = '--cflags --libs'
conf.env['OS_RESOURCES_LDFLAGS'] = '-z noexecstack'
if conf.env['OS'] != 'win32':
conf.env.append_value('OS_LV2_CXXFLAGS', ['-Wl,-z,relro,-z,now'])
if any('clang' not in s for s in conf.env["CXX"]):
conf.env.append_value('OS_LV2_CXXFLAGS', ['-Wl,-z,relro,-z,now'])
else:
# MSWin changes
conf.env.prepend_value('OS_SNDFILE_CFGFLAGS', ['--static'])
Expand Down Expand Up @@ -443,7 +446,7 @@ def configure(conf):
if conf.cpu_model:
display_msg("CPU version" , "%s" % conf.cpu_model, "CYAN")
if not conf.env['NOOPT'] and opt.optimization:
display_msg("package libcloog-ppl0 not found", "optimization is disabled", "RED")
display_msg("package libcloog-ppl0 not found", "loop optimization is disabled", "RED")
display_msg("C++ flags", " ".join(conf.env['CXXFLAGS']), 'CYAN')
display_msg("Link flags", " ".join(conf.env['LINKFLAGS']), 'CYAN')
display_msg("Compiler %s version" %conf.env["CXX"], "%s" % ".".join(conf.env["CC_VERSION"]), "CYAN")
Expand Down Expand Up @@ -549,19 +552,24 @@ def build(bld):
if bld.env['INTLTOOL']:
bld(name='i18n', features='intltool_po', appname=APPNAME, podir='po')

if any('clang' not in s for s in bld.env["CXX"]):
gccflags = ['-Wl,--exclude-libs,ALL']
else:
gccflags = []

if bld.env['HAVE_CONVOLVER_FFMPEG']:
bld.objects(name='ZITA_CONVOLVER',
source = 'src/zita-convolver-ffmpeg/zita-convolver.cc',
includes = 'src/headers',
export_includes = 'src/zita-convolver-ffmpeg',
use = ['LIBAVCODEC','LIBAVUTIL'],
cxxflags = bld.env.CXXFLAGS_cxxshlib + ['-fvisibility=hidden','-Wl,--exclude-libs,ALL'],
cxxflags = bld.env.CXXFLAGS_cxxshlib + ['-fvisibility=hidden'] + gccflags,
)
elif not bld.env['HAVE_ZITA_CONVOLVER']:
bld.objects(name='ZITA_CONVOLVER',
source='src/zita-convolver/zita-convolver.cc',
export_includes = 'src/zita-convolver',
cxxflags = bld.env.CXXFLAGS_cxxshlib + ['-fvisibility=hidden','-Wl,--exclude-libs,ALL'],
cxxflags = bld.env.CXXFLAGS_cxxshlib + ['-fvisibility=hidden'] + gccflags,
use = ['FFTW3','PTHREAD'],
)
if not bld.env['HAVE_ZITA_RESAMPLER']:
Expand All @@ -573,7 +581,7 @@ def build(bld):
includes = 'src/zita-resampler-1.1.0',
export_includes = 'src/zita-resampler-1.1.0',
use=['PTHREAD'],
cxxflags = bld.env.CXXFLAGS_cxxshlib + ['-fvisibility=hidden','-Wl,--exclude-libs,ALL'],
cxxflags = bld.env.CXXFLAGS_cxxshlib + ['-fvisibility=hidden'] + gccflags,
)
# process subfolders from here
bld.recurse('libgxw/gxw')
Expand Down

0 comments on commit 3964866

Please sign in to comment.