-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
89 lines (65 loc) · 2.1 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# Makefile for IRIX Audio Library
# Compiled for IRIX 6.5 with MIPSpro Compiler
# Compiler
CC = cc
# Compiler flags
# -32 for 32-bit compilation, -mips3 for MIPS III instruction set
# -O2 for optimization, -g for debugging symbols
CFLAGS = -32 -mips3 -O2 -Wall
# Linker flags
LDFLAGS = -shared -32
# Library name
LIB_NAME = libirixaudio.so
STATIC_LIB_NAME = libirixaudio.a
# Source files
SRCS = irix_audio.c
# Object files
OBJS = $(SRCS:.c=.o)
# Header files
HEADERS = irix_audio.h
# Include paths
INCLUDES = -I/usr/include/audio -I.
# Libraries
LIBS = -lAL -lm
# Example programs
EXAMPLES = irix_audio_info irix_two_streams sine_tone_generator audio_recorder audio_loopback
# Targets
all: $(LIB_NAME) $(STATIC_LIB_NAME) examples
# Examples
examples: $(EXAMPLES)
# Shared library
$(LIB_NAME): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
# Static library
$(STATIC_LIB_NAME): $(OBJS)
ar crs $@ $^
# Compile source files into object files
%.o: %.c $(HEADERS)
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
# Example program compilation rules
irix_audio_info: irix_audio_info.c $(LIB_NAME)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $< -L. -lirixaudio $(LIBS)
irix_two_streams: irix_two_streams.c $(LIB_NAME)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $< -L. -lirixaudio $(LIBS)
sine_tone_generator: sine_tone_generator.c $(LIB_NAME)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $< -L. -lirixaudio $(LIBS)
audio_recorder: audio_recorder.c $(LIB_NAME)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $< -L. -lirixaudio $(LIBS)
audio_loopback: audio_loopback.c $(LIB_NAME)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $< -L. -lirixaudio $(LIBS)
# Clean up build files
clean:
rm -f $(OBJS) $(LIB_NAME) $(STATIC_LIB_NAME) $(EXAMPLES)
# Install library (requires root/sudo)
install: $(LIB_NAME) $(STATIC_LIB_NAME)
mkdir -p /usr/local/lib
mkdir -p /usr/local/include
cp $(LIB_NAME) /usr/local/lib/
cp $(STATIC_LIB_NAME) /usr/local/lib/
cp irix_audio.h /usr/local/include/
# Uninstall library (requires root/sudo)
uninstall:
rm -f /usr/local/lib/$(LIB_NAME)
rm -f /usr/local/lib/$(STATIC_LIB_NAME)
rm -f /usr/local/include/irix_audio.h
.PHONY: all clean install uninstall examples