813 lines
22 KiB
Makefile
813 lines
22 KiB
Makefile
AUTOCONF = autoconf
|
|
CC = @CC@
|
|
CFLAGS = -c @CFLAGS@ @DEFS@ -I../include -I../src
|
|
LD = @CC@
|
|
LDFLAGS = @LDFLAGS@
|
|
LIBS = @LIBS@
|
|
V = 0
|
|
|
|
GCLIB = libxmp-gc.a
|
|
|
|
.c.o:
|
|
@CMD='$(CC) -MMD $(CFLAGS) -o $*.o $<'; \
|
|
if [ "$(V)" -gt 0 ]; then echo $$CMD; else echo CC $*.o ; fi; \
|
|
eval $$CMD
|
|
|
|
#
|
|
# Tests
|
|
#
|
|
#
|
|
REPLAYERS = mod ft2 st3 it
|
|
|
|
QUIRKS =
|
|
|
|
SMPLOADERS = 8bit 16bit delta signal endian skip
|
|
|
|
DEPACKERS = pp sqsh s404 mmcmp zip zip_filtered zip_store zip_zip64 \
|
|
arc_method2 arc_method3 arc_method4 arc_method8 arc_method9 \
|
|
arc_subdir_6 arc_subdir_spark spark arcfs arcfs_subdir \
|
|
gzip compress rar j2b lzx lzx_merge lzx_store bzip2 xz \
|
|
lha_l0_lzhuff1 lha_l0_lzhuff5 lha_l1_lzhuff5 \
|
|
lha_l1_lzhuff6 lha_l1_lzhuff7 lha_l2_lzhuff7 \
|
|
lha_l0_filtered lha_l1_filtered lha_l2_filtered \
|
|
vorbis vorbis_8bit \
|
|
it_sample_8bit it_sample_16bit
|
|
|
|
PROWIZARD = zen fuchs starpack
|
|
|
|
EFFECTS = 0_arpeggio 1_slide_up 2_slide_down \
|
|
4_vibrato a_volslide \
|
|
8_setpan \
|
|
c_volset \
|
|
e9_retrig ed_delay ef_invert_loop \
|
|
f_set_speed \
|
|
volslide track_volslide \
|
|
okt_arpeggio per_slide per_toneporta \
|
|
panbrello globalvol gvol_slide s3m_bpm it_bpm fine_vibrato \
|
|
it_panslide it_vcol_g it_break_to_row it_multi_retrig \
|
|
it_smooth_macro reverse line_jump \
|
|
pastnote_cut pastnote_off pastnote_fade \
|
|
set_nna_cut set_nna_cont set_nna_off set_nna_fade \
|
|
note_slide note_slide_retrig \
|
|
persistent_slide persistent_vslide persistent_vibrato \
|
|
it_g00_nosuck it_l00_nosuck it_fine_vol_row_delay \
|
|
far_slide far_toneporta far_retrig far_noteoffset \
|
|
far_vibrato far_vibrato_per far_volslide far_tempo \
|
|
ult_toneporta
|
|
|
|
API = get_format_list create_context free_context \
|
|
test_module load_module load_module_from_memory \
|
|
load_module_from_file load_module_from_callbacks \
|
|
test_module_from_file test_module_from_memory \
|
|
test_module_from_callbacks \
|
|
start_player play_buffer \
|
|
set_position prev_position set_position_midfx set_row \
|
|
set_player stop_module restart_module seek_time \
|
|
channel_mute channel_vol inject_event scan_module
|
|
|
|
API_SMIX = smix_play_instrument smix_load_sample smix_play_sample \
|
|
smix_channel_pan
|
|
|
|
STORLEK = 01_arpeggio_pitch_slide \
|
|
02_arpeggio_no_value \
|
|
03_compatible_gxx_off \
|
|
04_compatible_gxx_on \
|
|
05_gxx_fine_slides_memory \
|
|
06_volume_column_and_fine_slides \
|
|
07_note_cut_with_sample \
|
|
08_out_of_range_delays \
|
|
09_sample_change_no_note \
|
|
10_pattern_loop \
|
|
11_infinite_pattern_loop \
|
|
12_tremor \
|
|
13_tremor_with_old_effects \
|
|
14_pingpong_loop_and_sample_number \
|
|
15_retrigger \
|
|
16_global_volume \
|
|
17_pattern_row_delay \
|
|
18_sample_number_new_note \
|
|
19_random_waveform \
|
|
20_pan_swing_and_set_pan \
|
|
21_pitch_slide_limits \
|
|
22_zero_cut_and_delay \
|
|
23_portamento_with_no_note \
|
|
24_short_envelope_loops \
|
|
25_portamento_and_pitch_slide
|
|
|
|
OPENMPT_XM = 3xxins \
|
|
3xx_no_old_samp \
|
|
3xx_no_old_samp_noft \
|
|
arpeggio \
|
|
arpeggioclamp \
|
|
arpslide \
|
|
delay1 \
|
|
delay2 \
|
|
delay3 \
|
|
delaycombination \
|
|
delaycut \
|
|
e90 \
|
|
envloops \
|
|
envoff \
|
|
envretrig \
|
|
finetune \
|
|
finevol_linkmem \
|
|
glissando \
|
|
key_off \
|
|
keyoff2 \
|
|
keyoff_instr \
|
|
notelimit \
|
|
notelimit2 \
|
|
noteoff \
|
|
noteoff2 \
|
|
noteofffade \
|
|
noteoffvolume \
|
|
offdelay \
|
|
offsetrange \
|
|
panmemory \
|
|
panmemory2 \
|
|
panoff \
|
|
panslidemem \
|
|
pathead \
|
|
patterndelays \
|
|
patterndelaysretrig \
|
|
patloop_break \
|
|
patloop_weird \
|
|
pickup \
|
|
porta_linkmem \
|
|
porta_offset \
|
|
porta_pickup \
|
|
setenvpos \
|
|
toneportamentomemory \
|
|
tremolowaveforms \
|
|
tremor \
|
|
tremorinstr \
|
|
tremorrecover \
|
|
vibratowaveforms
|
|
|
|
OPENMPT_IT = autovibrato_reset \
|
|
bidi_loops \
|
|
carrynna \
|
|
cut_carry \
|
|
emptyslot \
|
|
envloopescape \
|
|
envloops \
|
|
envofflength \
|
|
envreset \
|
|
extreme_filter_test_1 \
|
|
fade_porta \
|
|
filter_7f \
|
|
filterenvreset \
|
|
filter_nna \
|
|
filter_reset \
|
|
filter_reset_carry \
|
|
finevolcolslide \
|
|
flt_env_carry \
|
|
fltmacro \
|
|
freqreset_noins \
|
|
globalvol_invalid \
|
|
gxsmp \
|
|
gxsmp2 \
|
|
gxxtest \
|
|
ins_flt_porta_reset \
|
|
instrumentnumberchange \
|
|
linearslides \
|
|
macro_extended_param \
|
|
macro_lastnote \
|
|
multizxx \
|
|
nomap \
|
|
noteoff2 \
|
|
noteoff3 \
|
|
noteoffinstr \
|
|
off_porta \
|
|
off_porta_compatgxx \
|
|
panreset \
|
|
porta_offset \
|
|
portainsnum \
|
|
portainsnumcompat \
|
|
portajuststoppednote \
|
|
portareset \
|
|
portasample \
|
|
portasamplecompat \
|
|
randompan \
|
|
retrig \
|
|
retrig_short \
|
|
s77 \
|
|
s7xinsnum \
|
|
samplenumberchange \
|
|
scx \
|
|
smpinspansurround \
|
|
stoppedinstrswap \
|
|
susafterloop \
|
|
swaptest \
|
|
swing1 \
|
|
swing2 \
|
|
swing3 \
|
|
vol_env_carry \
|
|
volcolmemory \
|
|
volume_macro_letters \
|
|
wnoteoff \
|
|
zxxsecrets
|
|
|
|
OPENMPT_S3M = amigalimits \
|
|
freqlimits \
|
|
parammemory \
|
|
patterndelaysretrig \
|
|
periodlimit \
|
|
portasmpchange
|
|
|
|
OPENMPT_MOD = amigalimitsfinetune \
|
|
arpwraparound \
|
|
delaybreak \
|
|
finetune \
|
|
patternjump \
|
|
portasmpchange \
|
|
portatarget \
|
|
ptoffset \
|
|
vibratoreset
|
|
|
|
MIXER = interpolation_default interpolation_loop bidi_sync \
|
|
mono_8bit_nearest mono_16bit_nearest \
|
|
stereo_8bit_nearest stereo_16bit_nearest \
|
|
mono_8bit_linear mono_16bit_linear \
|
|
stereo_8bit_linear stereo_16bit_linear \
|
|
mono_8bit_linear_filter mono_16bit_linear_filter \
|
|
stereo_8bit_linear_filter stereo_16bit_linear_filter \
|
|
mono_8bit_spline mono_16bit_spline \
|
|
stereo_8bit_spline stereo_16bit_spline \
|
|
mono_8bit_spline_filter mono_16bit_spline_filter \
|
|
stereo_8bit_spline_filter stereo_16bit_spline_filter \
|
|
downmix_8bit downmix_16bit mpt116_preamp
|
|
|
|
READ = file_32bit_little_endian file_32bit_big_endian \
|
|
file_24bit_little_endian file_24bit_big_endian \
|
|
file_16bit_little_endian file_16bit_big_endian \
|
|
file_8bit \
|
|
mem_32bit_little_endian mem_32bit_big_endian \
|
|
mem_16bit_little_endian mem_16bit_big_endian \
|
|
mem_hio mem_hio_nosize file_hio_pipe
|
|
|
|
WRITE = file_32bit_little_endian file_32bit_big_endian \
|
|
file_16bit_little_endian file_16bit_big_endian \
|
|
file_8bit
|
|
|
|
PLAYER = read_event scan period_amiga period_mod_range pan \
|
|
med_extsample med_hold med_instruments med_ss2defpitch \
|
|
med_synth med_synth_2 \
|
|
hmn_extras \
|
|
note_off_ft2 note_off_it \
|
|
virtual_channel nna_cut nna_cont nna_off nna_fade dct_note \
|
|
s3m_sample_porta \
|
|
it_channel_filter it_cut_invalid_ins \
|
|
it_fade_env_reset it_fade_env_reset_carry \
|
|
it_keyoff it_note_after_cut it_note_delay_nna it_sample_porta \
|
|
it_sus_after_loop_bidi it_default_volume \
|
|
it_duplicate_check_transpose it_portamento_nna_sample \
|
|
it_portamento_offset it_portamento_sustain \
|
|
it_portamento_after_keyoff it_portamento_after_keyoff_cg \
|
|
it_portamento_after_cut_fade it_portamento_after_cut_fade_cg \
|
|
it_portamento_envelope_reset it_portamento_envelope_reset_cg \
|
|
xm_portamento_envelope_reset xm_portamento_target \
|
|
xm_keyoff_with_instrument \
|
|
ft2_note_noins_after_keyoff \
|
|
ft2_note_noins_after_invalid_ins \
|
|
invalid_period invalid_mod_length invalid_mod_channels \
|
|
it_noteoff_nosuck mdl_period mtm_tempo sample_sync
|
|
|
|
LOADER = 6chn mod_adpcm4 mod_noterange mod_noterange2 mod_scrm mod_notawow \
|
|
mod_invalid mod_tdz3 mod_dt \
|
|
nst \
|
|
ust \
|
|
wow wow_extra \
|
|
m15 m15_invalid m15_invalid2 m15_invalid3 m15_invalid4 \
|
|
m15_invalid5 m15_invalid6 m15_orderquirk m15_short_rip \
|
|
s3m s3m_adpcm s3m_schism \
|
|
xm102 xm_adpcm xm_xmlite xm_short xm_instsamples \
|
|
it it_adpcm it_oldins it_schism it_invalid_fx \
|
|
669 \
|
|
abk \
|
|
arch \
|
|
asylum \
|
|
chiptracker \
|
|
coco coco_patalign \
|
|
dbm dbm_rows dbm_penv dbm_venv \
|
|
digi \
|
|
dsmi dsmi_08 dsmi_09 dsmi_10 dsmi_10_trunc \
|
|
dsmi_track0 dsmi_note7f dsmi_pan dsmi_vol \
|
|
dtm \
|
|
emod \
|
|
far far_fx \
|
|
flt flt8 \
|
|
fnk \
|
|
gdm gdm_fx gdm_fx2 \
|
|
hmn \
|
|
ice \
|
|
imf \
|
|
ims \
|
|
j2b \
|
|
liq liq_no \
|
|
masi \
|
|
masi16 \
|
|
mdl0 mdl \
|
|
med2 med3 med4 med4_decvol \
|
|
mmd0 mmd0_compattempo mmd1_longpat \
|
|
mmd3 mmd_iff3oct mmdc \
|
|
mfp \
|
|
mgt \
|
|
mtm \
|
|
okt \
|
|
ptm \
|
|
pt36 \
|
|
rtm \
|
|
sfx \
|
|
stim \
|
|
stm stm_blankpat stm_v1 \
|
|
stx \
|
|
sym sym_4096pat sym_fx sym_lzwquirk \
|
|
ult \
|
|
xmf \
|
|
ac1d \
|
|
crb crb2 \
|
|
di \
|
|
eureka \
|
|
fc_m \
|
|
fuchs \
|
|
fuzzac \
|
|
gmc \
|
|
hrt \
|
|
ksm \
|
|
mp_noid \
|
|
novotrade \
|
|
np1 np2 np3 \
|
|
nru \
|
|
p40a p40b p41a p50a p60 p61 \
|
|
pha pha_short \
|
|
pm10 pm18 \
|
|
pp10_1 pp10_2 pp10_3 pp10_4 \
|
|
pp21_1 pp21_2 \
|
|
pp30_1 pp30_2 \
|
|
pru1 pru2 \
|
|
skyt \
|
|
starpack \
|
|
tdd \
|
|
titanics \
|
|
tp1 tp2 tp3 \
|
|
unic unic_id0 unic2 \
|
|
wn \
|
|
xann
|
|
|
|
PROBLEMATIC = length_data_jack \
|
|
length_condom_corruption \
|
|
length_klisje_paa_klisje \
|
|
length_killvictor \
|
|
length_nebulos \
|
|
length_roadblast \
|
|
length_ode2ptk \
|
|
length_flowerpower \
|
|
length_space_traveller \
|
|
length_listen \
|
|
|
|
FUZZER = misc \
|
|
mod_no_null_terminator \
|
|
mod_no_valid_orders \
|
|
mod_scan_row_limit \
|
|
st_invalid_sample_count \
|
|
st_truncated \
|
|
s3m_invalid_sample_size \
|
|
s3m_invalid_sample_size2 \
|
|
xm_invalid \
|
|
xm_orders_mismatch \
|
|
xm_vorbis_crash \
|
|
xm_vorbis_leak \
|
|
xm_vorbis_truncated \
|
|
xm_zero_samples \
|
|
it_dca_3 \
|
|
it_invalid_compressed \
|
|
it_long_patterns \
|
|
it_truncated_header \
|
|
it_truncated_pattern \
|
|
669_truncated \
|
|
abk_0_instruments \
|
|
abk_test_title \
|
|
abk_truncated \
|
|
amf_truncated \
|
|
amf_truncated2 \
|
|
arch_duplicate_chunk \
|
|
arch_invalid_patterns \
|
|
asy_invalid_samples \
|
|
chip_truncated \
|
|
coco_invalid_sequence \
|
|
dbm_chunk_order \
|
|
dbm_invalid_instruments \
|
|
dbm_name_buffer_overflow \
|
|
dbm_sample_count \
|
|
dbm_truncated \
|
|
dbm_truncated_inst \
|
|
digi_truncated \
|
|
dt_channels_bound \
|
|
dt_duplicate_chunk \
|
|
dt_instrument_count \
|
|
dt_invalid_loop \
|
|
dt_truncated \
|
|
emod_duplicate_chunk \
|
|
far_truncated \
|
|
flt_umr \
|
|
fnk_channels_bound \
|
|
fnk_invalid_sample_size \
|
|
fnk_patterns_bound \
|
|
fnk_truncated \
|
|
gal4_duplicate_instrument \
|
|
gal4_env_point_bound \
|
|
gal4_invalid_sample_num \
|
|
gal4_truncated \
|
|
gal5_channels_bound \
|
|
gal5_duplicate_instrument \
|
|
gal5_invalid_sample_num \
|
|
gal5_truncated \
|
|
gal5_truncated_info \
|
|
gdm_invalid_sample_size \
|
|
gdm_samples_bound \
|
|
gdm_truncated \
|
|
gdm_truncated_header \
|
|
hmn_truncated \
|
|
ice_truncated \
|
|
imf_truncated \
|
|
ims_scan_loop \
|
|
ims_truncated_magic \
|
|
liq_no_valid_orders \
|
|
liq_truncated \
|
|
masi_invalid_length \
|
|
masi_seek_loop \
|
|
masi_truncated \
|
|
masi16_invalid \
|
|
mdl_duplicate_chunk \
|
|
mdl_duplicate_is_chunk \
|
|
mdl_duplicate_pa_chunk \
|
|
mdl_duplicate_sa_chunk \
|
|
mdl_ii_after_is \
|
|
mdl_invalid_chunk_order \
|
|
mdl_invalid_run \
|
|
mdl_invalid_sample \
|
|
mdl_truncated \
|
|
mdl_umr \
|
|
med2_truncated \
|
|
med3_invalid_pattern \
|
|
med4_instrument_name \
|
|
med4_invalid_iff \
|
|
med4_invalid_sample \
|
|
mfp_truncated \
|
|
mgt_patterns_bound \
|
|
mmd0_sample_count \
|
|
mmd1_channel_count \
|
|
mmd1_invalid \
|
|
mmd3_invalid \
|
|
mmd3_invalid_mmdinfo \
|
|
mmd3_invalid_sample_size \
|
|
mtm_channels_bound \
|
|
okt_duplicate_chunk \
|
|
okt_invalid_chunk_order \
|
|
okt_sbod_leak \
|
|
pt3_ptdt_leak \
|
|
pt3_truncated \
|
|
ptm_truncated \
|
|
rtm_truncated \
|
|
rtm_zero_samples \
|
|
sfx_truncated \
|
|
stim_truncated \
|
|
stm_patterns_bound \
|
|
stx_instruments_bound \
|
|
stx_truncated \
|
|
sym_bad_sigmadelta \
|
|
sym_truncated \
|
|
sym_truncated_lzw \
|
|
ult_channels_bound \
|
|
ult_invalid_sample \
|
|
ult_invalid_tracks \
|
|
ult_truncated \
|
|
ult_v000 \
|
|
umx_invalid \
|
|
prowizard_ac1d_invalid \
|
|
prowizard_di_invalid \
|
|
prowizard_di_truncated \
|
|
prowizard_eureka_truncated \
|
|
prowizard_fuchs_invalid \
|
|
prowizard_heatseek_128_patterns \
|
|
prowizard_heatseek_truncated \
|
|
prowizard_ksm_truncated \
|
|
prowizard_noiserun_invalid \
|
|
prowizard_noiserun_truncated \
|
|
prowizard_novotrade_invalid \
|
|
prowizard_np2_invalid \
|
|
prowizard_np3_invalid \
|
|
prowizard_p40_invalid \
|
|
prowizard_p50_127_patterns \
|
|
prowizard_p50_truncated \
|
|
prowizard_p61a_invalid \
|
|
prowizard_p61a_truncated \
|
|
prowizard_pha_invalid \
|
|
prowizard_pm10c_invalid \
|
|
prowizard_pm10c_zero_length \
|
|
prowizard_pm18a_invalid \
|
|
prowizard_pm18a_zero_length \
|
|
prowizard_pp10_invalid \
|
|
prowizard_pp21_truncated \
|
|
prowizard_pp30_invalid \
|
|
prowizard_starpack_invalid \
|
|
prowizard_starpack_truncated \
|
|
prowizard_theplayer_invalid \
|
|
prowizard_titanics_truncated \
|
|
prowizard_tp1_invalid \
|
|
prowizard_tp3_invalid \
|
|
prowizard_unic_truncated \
|
|
prowizard_xann_invalid \
|
|
prowizard_zen_invalid \
|
|
depack_arc_invalid \
|
|
depack_arc_pak10 \
|
|
depack_arc_slow_rle \
|
|
depack_arcfs_invalid \
|
|
depack_bz2_invalid \
|
|
depack_bz2_truncated \
|
|
depack_compress_invalid \
|
|
depack_gz_invalid \
|
|
depack_lha_invalid \
|
|
depack_lha_truncated \
|
|
depack_lzx_invalid \
|
|
depack_muse_truncated \
|
|
depack_pp20_invalid \
|
|
depack_s404_invalid \
|
|
depack_sqsh_invalid \
|
|
depack_sqsh_truncated \
|
|
depack_zip_truncated \
|
|
play_mod_bad_invloop \
|
|
play_s3m_low_period_vibrato \
|
|
play_xm_bad_env_sustain \
|
|
play_xm_bad_instrument \
|
|
play_xm_vol_env_clamp \
|
|
play_it_bad_env \
|
|
play_it_bad_loop \
|
|
play_it_bad_set_nna \
|
|
play_it_bad_sustain \
|
|
play_it_extreme_filter \
|
|
play_it_globalvol_marker \
|
|
play_it_offset_reverse \
|
|
play_it_row_0_loop_row_delay \
|
|
play_it_sustain_bidi \
|
|
play_669_low_freq \
|
|
play_abk_0_length_track \
|
|
play_asylum_bad_effects \
|
|
play_dbm_inst_no_samples \
|
|
play_far_highbpm \
|
|
play_gdm_bad_loop \
|
|
play_hmn_bad_loop_index \
|
|
play_hmn_bad_megaarp \
|
|
play_mdl_high_c5spd \
|
|
play_mdl_zero_samples \
|
|
play_med4_0_chn_invalid_ord \
|
|
play_mmd1_synth_bad_tables \
|
|
play_stm_bad_note_toneporta \
|
|
|
|
SYNTH = #adlib #spectrum
|
|
|
|
CASE1_TESTS = $(addprefix new_note_no_ins_,$(REPLAYERS)) \
|
|
$(addprefix new_note_same_ins_,$(REPLAYERS)) \
|
|
$(addprefix new_note_valid_ins_,$(REPLAYERS)) \
|
|
$(addprefix new_note_invalid_ins_,$(REPLAYERS))
|
|
|
|
CASE2_TESTS = $(addprefix no_note_same_ins_,$(REPLAYERS)) \
|
|
$(addprefix no_note_valid_ins_,$(REPLAYERS)) \
|
|
$(addprefix no_note_invalid_ins_,$(REPLAYERS))
|
|
|
|
CASE3_TESTS = $(addprefix porta_no_ins_,$(REPLAYERS)) \
|
|
$(addprefix porta_same_ins_,$(REPLAYERS)) \
|
|
$(addprefix porta_valid_ins_,$(REPLAYERS)) \
|
|
$(addprefix porta_invalid_ins_,$(REPLAYERS))
|
|
|
|
QUIRK_TESTS = $(addprefix quirk_,$(QUIRKS)) \
|
|
$(addprefix no_quirk_,$(QUIRKS))
|
|
|
|
SMPLOAD_TESTS = $(addprefix sample_load_,$(SMPLOADERS))
|
|
|
|
DEPACK_TESTS = $(addprefix depack_,$(DEPACKERS))
|
|
|
|
PROWIZARD_TESTS = $(addprefix prowizard_,$(PROWIZARD))
|
|
|
|
EFFECT_TESTS = $(addprefix effect_,$(EFFECTS))
|
|
|
|
SEQUENCER_TESTS = prev_order_start prev_order_skip prev_order_start_seq \
|
|
next_order_skip
|
|
|
|
STORLEK_TESTS = $(addprefix storlek_,$(STORLEK))
|
|
|
|
OPENMPT_XM_TESTS= $(addprefix openmpt_xm_,$(OPENMPT_XM))
|
|
|
|
OPENMPT_IT_TESTS= $(addprefix openmpt_it_,$(OPENMPT_IT))
|
|
|
|
OPENMPT_S3M_TESTS= $(addprefix openmpt_s3m_,$(OPENMPT_S3M))
|
|
|
|
OPENMPT_MOD_TESTS= $(addprefix openmpt_mod_,$(OPENMPT_MOD))
|
|
|
|
MIXER_TESTS = $(addprefix mixer_,$(MIXER))
|
|
|
|
READ_TESTS = $(addprefix read_,$(READ))
|
|
|
|
WRITE_TESTS = $(addprefix write_,$(WRITE))
|
|
|
|
PLAYER_TESTS = $(addprefix player_,$(PLAYER))
|
|
|
|
LOADER_TESTS = $(addprefix loader_,$(LOADER))
|
|
|
|
SYNTH_TESTS = $(addprefix synth_,$(SYNTH))
|
|
|
|
API_TESTS = $(addprefix api_,$(API)) $(addprefix api_,$(API_SMIX))
|
|
|
|
FUZZER_TESTS = $(addprefix fuzzer_,$(FUZZER))
|
|
|
|
PROBLEM_TESTS = $(addprefix module_,$(PROBLEMATIC))
|
|
|
|
TESTS = $(READ_TESTS) \
|
|
$(WRITE_TESTS) \
|
|
$(SMPLOAD_TESTS) \
|
|
$(DEPACK_TESTS) \
|
|
$(PROWIZARD_TESTS) \
|
|
string_adjustment \
|
|
$(LOADER_TESTS) \
|
|
$(API_TESTS) \
|
|
$(QUIRK_TESTS) \
|
|
$(CASE1_TESTS) \
|
|
$(CASE2_TESTS) \
|
|
$(CASE3_TESTS) \
|
|
$(NNA_TESTS) \
|
|
$(EFFECT_TESTS) \
|
|
$(SEQUENCER_TESTS) \
|
|
$(STORLEK_TESTS) \
|
|
$(OPENMPT_XM_TESTS) \
|
|
$(OPENMPT_IT_TESTS) \
|
|
$(OPENMPT_S3M_TESTS) \
|
|
$(OPENMPT_MOD_TESTS) \
|
|
$(PLAYER_TESTS) \
|
|
$(MIXER_TESTS) \
|
|
$(SYNTH_TESTS) \
|
|
$(FUZZER_TESTS) \
|
|
$(PROBLEM_TESTS)
|
|
|
|
TEST_NAMES = $(addprefix test_,$(TESTS))
|
|
|
|
MAIN_OBJS = util.o main.o simple_module.o compare_mixer_data.o
|
|
TEST_OBJS = $(MAIN_OBJS) $(TEST_NAMES:=.o)
|
|
|
|
TEST_DFILES = Makefile $(TEST_OBJS:.o=.c) test.h md5.h data
|
|
|
|
TEST_PATH = .
|
|
SRC_PATH = ../src
|
|
|
|
TEST_INTERNAL = md5.o win32.o hio.o load_helpers.o loaders/itsex.o dataio.o scan.o \
|
|
loaders/sample.o loaders/common.o filetype.o period.o memio.o \
|
|
depackers/xfnmatch.o far_extras.o lfo.o
|
|
|
|
T_OBJS = $(addprefix $(TEST_PATH)/,$(TEST_OBJS)) \
|
|
$(addprefix $(SRC_PATH)/,$(TEST_INTERNAL))
|
|
|
|
GCT_OBJS = $(addprefix $(TEST_PATH)/,$(TEST_OBJS))
|
|
|
|
default-test: check
|
|
|
|
dist-test:
|
|
mkdir -p $(DIST)/$(TEST_PATH)
|
|
cp -RPp $(addprefix $(TEST_PATH)/,$(TEST_DFILES)) $(DIST)/$(TEST_PATH)
|
|
|
|
clean: fuzzerclean
|
|
@rm -f core *~ $(T_OBJS)
|
|
@rm -f *.o
|
|
@rm -f *.d
|
|
|
|
distclean: clean
|
|
@rm -f config.log config.status Makefile all_tests.c libxmp-tests* .test .read_test write_test
|
|
|
|
vc-prepare: $(TEST_PATH)/all_tests.txt
|
|
@echo Generate Makefile.vc
|
|
@sed -e 's!@MAINSRCS@!\\\r\n $(subst /,\\,$(MAIN_OBJS:.o=.c \\\r\n))!' \
|
|
-e 's!@XMPSRCS@!\\\r\n $(subst .o,.c \\\r\n,$(subst /,\\,$(addprefix $(SRC_PATH)/,$(TEST_INTERNAL))))!' \
|
|
Makefile.vc.in > Makefile.vc
|
|
|
|
sinclude $(T_OBJS:.o=.d)
|
|
|
|
#
|
|
# Utilities
|
|
#
|
|
|
|
utilities: gen_mixer_data gen_module_data xmpchk
|
|
|
|
gen_mixer_data: gen_mixer_data.o
|
|
@CMD='$(LD) $(LDFLAGS) -o $@ gen_mixer_data.o -L../lib -lxmp'; \
|
|
if [ "$(V)" -gt 0 ]; then echo $$CMD; else echo LD $@ ; fi; \
|
|
eval $$CMD
|
|
|
|
gen_module_data: gen_module_data.o util.o ${SRC_PATH}/hio.o ${SRC_PATH}/dataio.o ${SRC_PATH}/memio.o ${SRC_PATH}/md5.o
|
|
@CMD='$(LD) $(LDFLAGS) -o $@ $^ -L../lib -lxmp $(LIBS)'; \
|
|
if [ "$(V)" -gt 0 ]; then echo $$CMD; else echo LD $@ ; fi; \
|
|
eval $$CMD
|
|
|
|
xmpchk: libxmp_fuzz.o ${SRC_PATH}/loaders/vorbis.o
|
|
@CMD='$(LD) $(LDFLAGS) -o $@ $^ -L../lib -lxmp $(LIBS)'; \
|
|
if [ "$(V)" -gt 0 ]; then echo $$CMD; else echo LD $@ ; fi; \
|
|
eval $$CMD
|
|
|
|
#
|
|
# Run standard tests
|
|
#
|
|
|
|
check: $(TEST_PATH)/all_tests.c $(TEST_PATH)/all_tests.txt $(TEST_PATH)/libxmp-tests
|
|
cd $(TEST_PATH); LD_LIBRARY_PATH=../lib DYLD_LIBRARY_PATH=../lib LIBRARY_PATH=../lib:$$LIBRARY_PATH PATH=$$PATH:../lib ./libxmp-tests
|
|
|
|
$(TEST_PATH)/libxmp-tests: $(T_OBJS)
|
|
@CMD='$(LD) $(LDFLAGS) -o $@ $(T_OBJS) $(LIBS) -L../lib -lxmp'; \
|
|
if [ "$(V)" -gt 0 ]; then echo $$CMD; else echo LD $@ ; fi; \
|
|
eval $$CMD
|
|
|
|
#
|
|
# Run coverage test
|
|
#
|
|
|
|
covercheck: coverclean $(TEST_PATH)/all_tests.c $(TEST_PATH)/libxmp-covertest
|
|
cd $(TEST_PATH); LD_LIBRARY_PATH=../lib DYLD_LIBRARY_PATH=../lib LIBRARY_PATH=../lib:$$LIBRARY_PATH ./libxmp-covertest ||:
|
|
lcov -c -b .. -d .. -k src -k ../include --rc lcov_branch_coverage=1 -o libxmp.cov
|
|
rm -Rf coverage
|
|
genhtml -o coverage --rc lcov_branch_coverage=1 libxmp.cov
|
|
|
|
coverclean:
|
|
@rm -f $(GCOBJS) ../lib/$(GCLIB)
|
|
|
|
$(TEST_PATH)/libxmp-covertest: $(GCT_OBJS) ../lib/$(GCLIB)
|
|
@CMD='$(LD) $(LDFLAGS) -o $@ $(GCT_OBJS) ../lib/$(GCLIB) -lgcov $(LIBS)'; \
|
|
if [ "$(V)" -gt 0 ]; then echo $$CMD; else echo LD $@ ; fi; \
|
|
eval $$CMD
|
|
|
|
../lib/$(GCLIB):
|
|
make -C .. coverage
|
|
|
|
$(TEST_PATH)/main.o: $(TEST_PATH)/main.c $(TEST_PATH)/all_tests.c $(TEST_PATH)/test.h $(TEST_PATH)/all_tests.c
|
|
|
|
$(TEST_PATH)/test.h $(TEST_PATH)/main.c: $(TEST_PATH)/all_tests.c
|
|
$(addprefix $(TEST_PATH)/,$(TEST_OBJS)): $(TEST_PATH)/all_tests.c
|
|
|
|
$(TEST_PATH)/all_tests.c: $(TEST_PATH)/Makefile
|
|
@echo > $@; \
|
|
for i in $(TEST_NAMES); do \
|
|
echo "declare_test($$i);" >> $@; \
|
|
done
|
|
|
|
$(TEST_PATH)/all_tests.txt: $(TEST_PATH)/Makefile
|
|
@$(RM) $@; \
|
|
for i in $(TEST_NAMES); do \
|
|
echo "$$i" >> $@; \
|
|
done
|
|
|
|
$(addprefix $(SRC_PATH)/,$(TEST_INTERNAL)): $(SRC_PATH)/player.h
|
|
|
|
#
|
|
# Fuzzers
|
|
#
|
|
|
|
FUZZLIB_PATH = .fuzzer
|
|
FUZZ_ASAN_FLAGS = -O3 -fsanitize=fuzzer,address,undefined -fno-sanitize-recover=all -fno-sanitize=shift-base -fno-omit-frame-pointer -g -DLIBXMP_LIBFUZZER
|
|
FUZZ_MSAN_FLAGS = -O3 -fsanitize=fuzzer,memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -DLIBXMP_LIBFUZZER
|
|
FUZZLIB_ASAN_FLAGS = $(subst fuzzer,fuzzer-no-link,$(FUZZ_ASAN_FLAGS))
|
|
FUZZLIB_MSAN_FLAGS = $(subst fuzzer,fuzzer-no-link,$(FUZZ_MSAN_FLAGS))
|
|
FUZZ_CC ?= clang
|
|
|
|
.PHONY: fuzzers fuzzerclean $(FUZZLIB_PATH)
|
|
|
|
fuzzers: libxmp_fuzz_asan libxmp_fuzz_msan
|
|
|
|
fuzzerclean:
|
|
rm -rf $(FUZZLIB_PATH) libxmp_fuzz_asan libxmp_fuzz_msan
|
|
|
|
$(FUZZLIB_PATH):
|
|
rm -rf $(FUZZLIB_PATH)
|
|
mkdir -p $(FUZZLIB_PATH)
|
|
(BASE=$$(pwd); cd .. && git checkout-index -a --prefix "$$BASE/$(FUZZLIB_PATH)/")
|
|
|
|
$(FUZZLIB_PATH)/libxmp-asan.a: $(FUZZLIB_PATH)
|
|
(cd $(FUZZLIB_PATH) && \
|
|
$(AUTOCONF) && \
|
|
CC="$(FUZZ_CC)" CFLAGS="$(FUZZLIB_ASAN_FLAGS)" LDFLAGS="$(FUZZLIB_ASAN_FLAGS)" ./configure && \
|
|
$(MAKE) static && \
|
|
cp lib/libxmp.a libxmp-asan.a && \
|
|
$(MAKE) distclean)
|
|
|
|
$(FUZZLIB_PATH)/libxmp-msan.a: $(FUZZLIB_PATH) | $(FUZZLIB_PATH)/libxmp-asan.a
|
|
(cd $(FUZZLIB_PATH) && \
|
|
$(AUTOCONF) && \
|
|
CC="$(FUZZ_CC)" CFLAGS="$(FUZZLIB_MSAN_FLAGS)" LDFLAGS="$(FUZZLIB_MSAN_FLAGS)" ./configure && \
|
|
$(MAKE) static && \
|
|
cp lib/libxmp.a libxmp-msan.a && \
|
|
$(MAKE) distclean)
|
|
|
|
libxmp_fuzz_asan: libxmp_fuzz.c $(FUZZLIB_PATH)/libxmp-asan.a
|
|
@CMD='$(FUZZ_CC) $(FUZZ_ASAN_FLAGS) -o $@ $< -L$(FUZZLIB_PATH) -lxmp-asan'; \
|
|
if [ "$(V)" -gt 0 ]; then echo $$CMD; else echo LD $@ ; fi; \
|
|
eval $$CMD
|
|
|
|
libxmp_fuzz_msan: libxmp_fuzz.c $(FUZZLIB_PATH)/libxmp-msan.a
|
|
@CMD='$(FUZZ_CC) $(FUZZ_MSAN_FLAGS) -o $@ $< -L$(FUZZLIB_PATH) -lxmp-msan'; \
|
|
if [ "$(V)" -gt 0 ]; then echo $$CMD; else echo LD $@ ; fi; \
|
|
eval $$CMD
|