# compile and test Ada 95 math library # these files are set up for gnat # 'lib' needs syspriv all: real integer complex poly eigen precise fftg test fft runfft # compile gnatmath and build gnatmathlib.a (DOS and Unix) real: echo building and testing gnatmath gcc -c mathematical_constants.ads gcc -c array_exceptions.ads echo ===real_arrays gcc -c -gnatc generic_real_arrays.ads gcc -c generic_real_arrays.adb gcc -c -gnatc real_arrays_io.ads gcc -c real_arrays_io.adb gcc -c -gnatc test_generic_real_arrays.ads gcc -c test_generic_real_arrays.adb gcc -c test_generic_real_arrays_1.adb gnatbl test_generic_real_arrays_1.ali gcc -c -gnatc real_arrays.ads gcc -c test_real_arrays_1.ads gnatbl test_real_arrays_1.ali gcc -c long_real_arrays.ads gcc -c test_long_real_arrays_1.ads gnatbl test_long_real_arrays_1.ali gcc -c test_real_arrays_io.adb gnatbl test_real_arrays_io.ali touch real integer: echo ===integer_arrays gcc -c -gnatc generic_integer_arrays.ads gcc -c generic_integer_arrays.adb gcc -c -gnatc integer_arrays_io.ads gcc -c integer_arrays_io.adb gcc -c -gnatc test_generic_integer_arrays.ads gcc -c test_generic_integer_arrays.adb gcc -c test_generic_integer_arrays_1.adb gnatbl test_generic_integer_arrays_1.ali gcc -c integer_arrays.ads gcc -c test_integer_arrays_1.adb gnatbl test_integer_arrays_1.ali gcc -c long_integer_arrays.ads gcc -c test_long_integer_arrays_1.adb gnatbl test_long_integer_arrays_1.ali gcc -c test_integer_arrays_io.adb gnatbl test_integer_arrays_io.ali touch integer complex: echo ===complex_arrays gcc -c test_generic_complex_types.adb gnatbl test_generic_complex_types.ali gcc -c -gnatc generic_complex_arrays.ads gcc -c generic_complex_arrays.adb gcc -c -gnatc complex_arrays_io.ads gcc -c complex_arrays_io.adb gcc -c -gnatc test_generic_complex_arrays.ads gcc -c test_generic_complex_arrays.adb gcc -c test_generic_complex_arrays_1.adb gnatbl test_generic_complex_arrays_1.ali gcc -c complex_types.ads gcc -c complex_arrays.ads gcc -c test_complex_arrays_1.ads gnatbl test_complex_arrays_1.ali gcc -c long_complex_arrays.ads gcc -c test_long_complex_arrays_1.ads gnatbl test_long_complex_arrays_1.ali gcc -c test_complex_arrays_io.adb gnatbl test_complex_arrays_io.ali echo ===linear_equations gcc -c -gnatc generic_real_linear_equations.ads gcc -c generic_real_linear_equations.adb gcc -c test_generic_real_linear_equations.adb gnatbl test_generic_real_linear_equations.ali gcc -c -gnatc generic_complex_linear_equations.ads gcc -c generic_complex_linear_equations.adb gcc -c test_generic_complex_linear_equations.adb gnatbl test_generic_complex_linear_equations.ali touch complex poly: gcc -c -gnatc generic_real_polynomials.ads gcc -c generic_real_polynomials.adb gcc -c test_generic_real_polynomials.adb gnatbl test_generic_real_polynomials.ali gcc -c -gnatc complex_polynomials_io.ads gcc -c complex_polynomials_io.adb gcc -c -gnatc generic_complex_polynomials.ads gcc -c generic_complex_polynomials.adb touch poly # compiler bug message # gcc -c test_generic_complex_polynomials.adb # gnatbl test_generic_complex_polynomials.ali eigen: echo ===eigenvalues gcc -c -gnatc generic_complex_eigen_check.ads gcc -c generic_complex_eigen_check.adb gcc -c complex_eigen_check.ads gcc -c long_complex_eigen_check.ads gcc -c -gnatc generic_complex_eigenvalues.ads gcc -c generic_complex_eigenvalues.adb gcc -c complex_eigenvalues.ads gcc -c long_complex_eigenvalues.ads gcc -c test_generic_complex_eigenvalues.adb gnatbl test_generic_complex_eigenvalues.ali touch eigen fftg: echo ===fast_fourier gcc -c -gnatc generic_complex_fast_fourier_transform.ads gcc -c generic_complex_fast_fourier_transform.adb gcc -c complex_fast_fourier_transform.ads gcc -c long_complex_fast_fourier_transform.ads gcc -c test_long_complex_fast_fourier_transform.adb gnatbl test_long_complex_fast_fourier_transform.ali touch fftg precise: echo ===precise_types gcc -c -gnatc precise_types.ads gcc -c precise_types.adb gcc -c -gnatc precise_io.ads gcc -c precise_io.adb gcc -c test_precise_types.adb gnatbl test_precise_types.ali touch precise lib: ar -cr gnatmathlib.a *.o # build gnatmathlib.a cp gnatmathlib.a /usr/lib echo built /usr/lib/gnatmathlib.a touch lib test: echo === now execute the tests test_generic_real_arrays_1 > test_generic_real_arrays_1.out test_real_arrays_1 > test_real_arrays_1.out test_long_real_arrays_1 > test_long_real_arrays_1.out test_real_arrays_io > test_real_arrays_io.out test_generic_integer_arrays_1 > test_generic_integer_arrays_1.out test_integer_arrays_1 > test_integer_arrays_1.out test_long_integer_arrays_1 > test_long_integer_arrays_1.out test_integer_arrays_io > test_integer_arrays_io.out test_generic_complex_types > test_generic_complex_types.out test_generic_complex_arrays_1 > test_generic_complex_arrays_1.out test_complex_arrays_1 > test_complex_arrays_1.out test_long_complex_arrays_1 > test_long_complex_arrays_1.out test_complex_arrays_io > test_complex_arrays_io.out test_generic_complex_linear_equations > test_generic_complex_linear_equations.out test_long_complex_fast_fourier_transform > test_long_complex_fast_fourier_transform.out test_precise_types > test_precise_types.out test_generic_complex_eigenvalues < test_generic_complex_eigenvalues.dat > test_generic_complex_eigenvalues.out echo === done tests touch test # build fft timing test fft: gcc -c array_exceptions.ads gcc -c -gnatc generic_integer_arrays.ads gcc -c generic_integer_arrays.adb gcc -c -gnatc integer_arrays.ads gcc -c -gnatc generic_real_arrays.ads gcc -c generic_real_arrays.adb gcc -c real_arrays.ads gcc -c -gnatc generic_complex_arrays.ads gcc -c generic_complex_arrays.adb gcc -c complex_types.ads gcc -c complex_arrays.ads gcc -O2 -c fft16.adb gcc -O2 -c ifft16.adb gcc -O2 -c fft32.adb gcc -O2 -c ifft32.adb gcc -O2 -c fft64.adb gcc -O2 -c ifft64.adb gcc -O2 -c fft128.adb gcc -O2 -c ifft128.adb gcc -O2 -c fft256.adb gcc -O2 -c ifft256.adb gcc -O2 -c fft512.adb gcc -O2 -c ifft512.adb gcc -O2 -c fft1024.adb gcc -O2 -c ifft1024.adb gcc -O2 -c fft2048.adb gcc -O2 -c ifft2048.adb gcc -O2 -c fft4096.adb gcc -O2 -c ifft4096.adb gcc -O2 -c fft_time.adb gnatbl -O2 fft_time.ali touch fft runfft: fft_time > fft_time.out # runs a long time touch runfft clean: rm -f *.o rm -f *.ali rm -f *.log rm -f *.a rm -f real # Makefile dependents rm -f integer rm -f complex rm -f poly rm -f eigen rm -f precise rm -f test rm -f fft rm -f runfft rm -f fftg rm -f test_complex_arrays_1 rm -f test_complex_arrays_io rm -f test_generic_complex_arrays_1 rm -f test_generic_complex_eigenvalues rm -f test_generic_complex_linear_equations rm -f test_generic_integer_arrays_1 rm -f test_generic_real_arrays_1 rm -f test_integer_arrays_1 rm -f test_integer_arrays_io rm -f test_long_complex_arrays_1 rm -f test_long_complex_fast_fourier_transform rm -f test_long_integer_arrays_1 rm -f test_long_real_arrays_1 rm -f test_precise_types rm -f test_real_arrays_1 rm -f test_real_arrays_io rm -f fft_time rm -f test_generic_real_linear_equations