mirror of
https://github.com/vsariola/sointu.git
synced 2025-06-04 01:28:45 -04:00
Fix builds and tests to pass on Linux.
Builds on both 32-bit and 64-bit executables and all tests (except gm.dls stuff obviously, which was excluded) pass on 64-bit Linux. Cannot test the 32-bit executables, as WSL does not support running 32-bit.
This commit is contained in:
parent
b64723323f
commit
5e05057240
11
README.md
11
README.md
@ -84,14 +84,17 @@ New features since fork
|
|||||||
- **Supports 32 and 64 bit builds**. The 64-bit version is done with minimal
|
- **Supports 32 and 64 bit builds**. The 64-bit version is done with minimal
|
||||||
changes to get it work, mainly for the future prospect of running the MIDI
|
changes to get it work, mainly for the future prospect of running the MIDI
|
||||||
instrument in 64-bit mode. All the tests are passing so it seems to work.
|
instrument in 64-bit mode. All the tests are passing so it seems to work.
|
||||||
|
- **Supports both Windows and Linux**. Currently, all the tests are compiling
|
||||||
|
on Windows and Linux, both 32-bit and 64-bit, and the tests are passing on
|
||||||
|
64-bit Linux, tested on WSL. 32-bit executables don't run on WSL, so those
|
||||||
|
remain to be tested.
|
||||||
|
|
||||||
Future goals
|
Future goals
|
||||||
------------
|
------------
|
||||||
|
|
||||||
- **Cross-platform support for win / mac / linux**. The build is already based
|
- **Support for mac**. This should be rather easy, as all the macros are
|
||||||
on CMake and compiles on Windows. Cross-platform NASM/YASM macros have been
|
designed for cross-platform support, but as I don't have a mac, I cannot
|
||||||
drafted and remain to be tested. Once the project is more mature, I will
|
test this.
|
||||||
try compiling on other platforms.
|
|
||||||
- **Find a more general solution for skipping opcodes / early outs**. It's
|
- **Find a more general solution for skipping opcodes / early outs**. It's
|
||||||
probably a new opcode "skip" that skips from the opcode to the next out in
|
probably a new opcode "skip" that skips from the opcode to the next out in
|
||||||
case the signal entering skip and the signal leaving out are both close to
|
case the signal entering skip and the signal leaving out are both close to
|
||||||
|
@ -27,11 +27,18 @@
|
|||||||
%define MANGLE_DATA(d) d
|
%define MANGLE_DATA(d) d
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifidn __OUTPUT_FORMAT__,elf32
|
%ifidn __OUTPUT_FORMAT__,elf
|
||||||
; on linux, function f with n parameters is mangled as "f"
|
; on linux, function f with n parameters is mangled as "f"
|
||||||
%define MANGLE_FUNC(f,n) f
|
%define MANGLE_FUNC(f,n) f
|
||||||
; On linux, data label d is mangled as "d"
|
; On linux, data label d is mangled as "d"
|
||||||
%define MANGLE_DATA(d) d
|
%define MANGLE_DATA(d) d
|
||||||
|
%assign BITS 32
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ifidn __OUTPUT_FORMAT__,elf64
|
||||||
|
%define MANGLE_FUNC(f,n) f
|
||||||
|
%define MANGLE_DATA(d) d
|
||||||
|
%assign BITS 64
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifidn __OUTPUT_FORMAT__,macho32
|
%ifidn __OUTPUT_FORMAT__,macho32
|
||||||
|
@ -91,8 +91,10 @@ regression_test(test_oscillat_trisaw ENVELOPE)
|
|||||||
regression_test(test_oscillat_pulse ENVELOPE VCO_PULSE)
|
regression_test(test_oscillat_pulse ENVELOPE VCO_PULSE)
|
||||||
regression_test(test_oscillat_gate ENVELOPE)
|
regression_test(test_oscillat_gate ENVELOPE)
|
||||||
regression_test(test_oscillat_stereo ENVELOPE)
|
regression_test(test_oscillat_stereo ENVELOPE)
|
||||||
regression_test(test_oscillat_sample ENVELOPE)
|
if(WIN32) # The samples are currently only GMDLs based, and thus require Windows.
|
||||||
regression_test(test_oscillat_sample_stereo ENVELOPE)
|
regression_test(test_oscillat_sample ENVELOPE)
|
||||||
|
regression_test(test_oscillat_sample_stereo ENVELOPE)
|
||||||
|
endif()
|
||||||
regression_test(test_oscillat_unison ENVELOPE)
|
regression_test(test_oscillat_unison ENVELOPE)
|
||||||
regression_test(test_oscillat_unison_stereo ENVELOPE)
|
regression_test(test_oscillat_unison_stereo ENVELOPE)
|
||||||
regression_test(test_oscillat_lfo "ENVELOPE;VCO_SINE;VCO_PULSE;FOP_MULP2")
|
regression_test(test_oscillat_lfo "ENVELOPE;VCO_SINE;VCO_PULSE;FOP_MULP2")
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#if defined (_WIN32)
|
#if defined (_WIN32)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
@ -12,7 +13,19 @@
|
|||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
extern void __stdcall su_render();
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#if UINTPTR_MAX == 0xffffffff // are we 32-bit?
|
||||||
|
#if defined(__clang__) || defined(__GNUC__)
|
||||||
|
#define CALLCONV __attribute__ ((stdcall))
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
#define CALLCONV __stdcall // on 32-bit platforms, we just use stdcall, as all know it
|
||||||
|
#endif
|
||||||
|
#else // 64-bit
|
||||||
|
#define CALLCONV // the asm will use honor honor correct x64 ABI on all 64-bit platforms
|
||||||
|
#endif
|
||||||
|
extern void CALLCONV su_render(void *);
|
||||||
|
|
||||||
extern int su_max_samples;
|
extern int su_max_samples;
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
@ -25,7 +38,7 @@ int main(int argc, char* argv[]) {
|
|||||||
char actual_output_folder[] = "actual_output/";
|
char actual_output_folder[] = "actual_output/";
|
||||||
long fsize;
|
long fsize;
|
||||||
long bufsize;
|
long bufsize;
|
||||||
boolean small_difference;
|
bool small_difference;
|
||||||
double diff;
|
double diff;
|
||||||
#ifndef SU_USE_16BIT_OUTPUT
|
#ifndef SU_USE_16BIT_OUTPUT
|
||||||
float* buf = NULL;
|
float* buf = NULL;
|
||||||
@ -84,7 +97,7 @@ int main(int argc, char* argv[]) {
|
|||||||
|
|
||||||
fread((void*)filebuf, su_max_samples * 2, sizeof(*filebuf), f);
|
fread((void*)filebuf, su_max_samples * 2, sizeof(*filebuf), f);
|
||||||
|
|
||||||
small_difference = FALSE;
|
small_difference = false;
|
||||||
|
|
||||||
for (n = 0; n < su_max_samples * 2; n++) {
|
for (n = 0; n < su_max_samples * 2; n++) {
|
||||||
diff = (double)(buf[n]) - (double)(filebuf[n]);
|
diff = (double)(buf[n]) - (double)(filebuf[n]);
|
||||||
@ -97,7 +110,7 @@ int main(int argc, char* argv[]) {
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
else if (diff > 0.0f) {
|
else if (diff > 0.0f) {
|
||||||
small_difference = TRUE;
|
small_difference = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user