Add build system for linux

This commit is contained in:
Johannes Schriewer 2024-03-04 01:23:09 +01:00
parent 66373cc64e
commit 3a1f81dd59
5 changed files with 160 additions and 0 deletions

34
Makefile Normal file
View file

@ -0,0 +1,34 @@
SRCS := AudioLib/main.c
INCLUDES := -Iaudio/include
BUILDDIR = .build
TARGET := libaudio-test
OBJS := $(addprefix $(BUILDDIR)/, $(patsubst %.c,%.o, $(SRCS)))
CC = gcc
AR = ar
PKGCONFIG = pkg-config
CFLAGS = --std=gnu99 -Wall
all: $(TARGET)
$(TARGET): $(OBJS) | audiolib
$(CC) `$(PKGCONFIG) --libs ao` -Laudio/.build/ -Laudio/.build/libmad -Laudio/.build/speexdsp -o $(TARGET) $(OBJS) -laudio -lmad -lspeexresampler -lm
audiolib:
(cd audio; make)
$(BUILDDIR)/%.o: %.c
$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
$(OBJS): | $(BUILDDIR)
$(BUILDDIR):
mkdir -p $(BUILDDIR)/AudioLib
.PHONY: clean
clean:
-rm $(OBJS)
-rm $(TARGET)
(cd audio; make clean)

48
audio/Makefile Normal file
View file

@ -0,0 +1,48 @@
SRCS := \
audio.c \
audio_internal.c \
audio_source_file.c \
audio_source_testtone.c \
audio_demuxer_mp3.c \
audio_decoder_mp3.c \
audio_filter_param_eq.c \
audio_filter_resample.c \
audio_sink_file.c \
audio_sink_libao.c
INCLUDES := -Iinclude
BUILDDIR = .build
TARGET := $(BUILDDIR)/libaudio.a
OBJS := $(addprefix $(BUILDDIR)/, $(patsubst %.c,%.o, $(SRCS)))
CC = gcc
AR = ar
CFLAGS = --std=gnu99 -Wall
all: $(TARGET) $(BUILDDIR)/libmad/libmad.a $(BUILDDIR)/speexdsp/libspeexresampler.a
$(TARGET): $(OBJS)
$(AR) -cr $(TARGET) $(OBJS)
$(BUILDDIR)/libmad/libmad.a:
(cd deps/mp3; make BUILDDIR=$(abspath $(BUILDDIR)/libmad))
$(BUILDDIR)/speexdsp/libspeexresampler.a:
(cd deps/resampler; make BUILDDIR=$(abspath $(BUILDDIR)/speexdsp))
$(BUILDDIR)/%.o: %.c include/%.h
$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
$(OBJS): | $(BUILDDIR)
$(BUILDDIR):
mkdir -p $(BUILDDIR)
.PHONY: clean
clean:
-rm $(OBJS)
-rm $(TARGET)
(cd deps/mp3; make BUILDDIR=$(abspath $(BUILDDIR)/libmad) clean)
(cd deps/resampler; make BUILDDIR=$(abspath $(BUILDDIR)/speexdsp) clean)

39
audio/deps/mp3/Makefile Normal file
View file

@ -0,0 +1,39 @@
SRCS := \
bit.c \
fixed.c \
frame.c \
huffman.c \
layer3.c \
layer12.c \
stream.c \
synth.c \
timer.c \
version.c
BUILDDIR = .build
TARGET := $(BUILDDIR)/libmad.a
OBJS := $(addprefix $(BUILDDIR)/, $(patsubst %.c,%.o, $(SRCS)))
CC = gcc
AR = ar
CFLAGS = --std=gnu99 -Wall
all: $(TARGET)
$(TARGET): $(OBJS)
$(AR) -cr $(TARGET) $(OBJS)
$(BUILDDIR)/%.o: %.c %.h config.h
$(CC) $(CFLAGS) -c $< -o $@
$(OBJS): | $(BUILDDIR)
$(BUILDDIR):
mkdir -p $(BUILDDIR)
.PHONY: clean
clean:
-rm $(OBJS)
-rm $(TARGET)

View file

@ -0,0 +1,28 @@
SRCS := resample.c
BUILDDIR = .build
TARGET := $(BUILDDIR)/libspeexresampler.a
OBJS := $(addprefix $(BUILDDIR)/, $(patsubst %.c,%.o, $(SRCS)))
CC = gcc
AR = ar
CFLAGS = --std=gnu99 -Wall
all: $(TARGET)
$(TARGET): $(OBJS)
$(AR) -cr $(TARGET) $(OBJS)
$(BUILDDIR)/%.o: %.c config.h
$(CC) $(CFLAGS) -c $< -o $@
$(OBJS): | $(BUILDDIR)
$(BUILDDIR):
mkdir -p $(BUILDDIR)
.PHONY: clean
clean:
-rm $(OBJS)
-rm $(TARGET)

11
shell.nix Normal file
View file

@ -0,0 +1,11 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
nativeBuildInputs = with pkgs.buildPackages; [
libao
pkg-config
gcc
file
];
shellHook = ''
'';
}