-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMakefile
143 lines (113 loc) · 2.59 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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
########################
#
# SMPSPlay Makefile
#
########################
ifeq ($(OS),Windows_NT)
WINDOWS = 1
else
WINDOWS = 0
endif
ifeq ($(WINDOWS), 0)
USE_BSD_AUDIO = 0
USE_ALSA = 1
USE_LIBAO = 1
endif
INCPATH = libs/install/include
LIBPATH = libs/install/lib
CC = gcc
CPP = g++
PREFIX = /usr/local
MANPREFIX = $(PREFIX)/share/man
CFLAGS := -O3 -g0 $(CFLAGS) -I libs/include -I $(INCPATH)/vgm
CCFLAGS = -std=gnu99
CPPFLAGS = -std=gnu++98
#CFLAGS += -Wall -Wextra -Wpedantic
CFLAGS += -D ENABLE_LOOP_DETECTION -D ENABLE_VGM_LOGGING
#CFLAGS += -fstack-protector
#LDFLAGS += -fstack-protector
# add Library Path, if defined
ifdef LD_LIBRARY_PATH
LDFLAGS += -L $(LD_LIBRARY_PATH)
endif
ifeq ($(WINDOWS), 1)
# for Windows, add kernel32 and winmm (Multimedia APIs)
LDFLAGS += -lkernel32 -lwinmm -ldsound -luuid -lole32
else
# for Linux add pthread support (-pthread should include -lpthread)
# add librt (clock stuff)
LDFLAGS += -lm -lrt -pthread
CFLAGS += -pthread -DSHARE_PREFIX=\"$(PREFIX)\"
endif
# --- Audio Output stuff ---
CFLAGS += -DAUDDRV_WAVEWRITE
ifeq ($(WINDOWS), 1)
CFLAGS += -D AUDDRV_WINMM
CFLAGS += -D AUDDRV_DSOUND
CFLAGS += -D AUDDRV_XAUD2
#CFLAGS += -D AUDDRV_WASAPI
endif
ifneq ($(WINDOWS), 1)
ifneq ($(USE_BSD_AUDIO), 1)
CFLAGS += -D AUDDRV_OSS
else
CFLAGS += -D AUDDRV_SADA
endif
ifeq ($(USE_ALSA), 1)
LDFLAGS += -lasound
CFLAGS += -D AUDDRV_ALSA
endif
endif
ifeq ($(USE_LIBAO), 1)
LDFLAGS += -lao
CFLAGS += -D AUDDRV_LIBAO
endif
SRC = src
OBJ = obj
LIBAUDSRC = $(SRC)/audio
LIBAUDOBJ = $(OBJ)/audio
OBJDIRS = \
$(OBJ) \
$(OBJ)/Engine
LIBS = \
$(LIBPATH)/libvgm-audio.a \
$(LIBPATH)/libvgm-utils.a \
$(LIBPATH)/libvgm-emu.a
ENGINEOBJS = \
$(OBJ)/Engine/dac.o \
$(OBJ)/Engine/necpcm.o \
$(OBJ)/Engine/smps.o \
$(OBJ)/Engine/smps_commands.o \
$(OBJ)/Engine/smps_drums.o \
$(OBJ)/Engine/smps_extra.o
# Note: dirent.c is required for MS VC only.
MAINOBJS = \
$(OBJ)/ini_lib.o \
$(OBJ)/loader_data.o \
$(OBJ)/loader_def.o \
$(OBJ)/loader_ini.o \
$(OBJ)/loader_smps.o \
$(OBJ)/main.o \
$(OBJ)/Sound.o \
$(OBJ)/vgmwrite.o
ALLOBJS = $(ENGINEOBJS) $(MAINOBJS)
all: smpsplay
smpsplay: dirs $(ALLOBJS)
@echo Linking smpsplay ...
$(CC) $(ALLOBJS) $(LIBS) $(LDFLAGS) -o smpsplay
@echo Done.
dirs:
@mkdir -p $(OBJDIRS)
$(OBJ)/%.o: $(SRC)/%.c
@echo Compiling $< ...
@$(CC) $(CFLAGS) $(CCFLAGS) -c $< -o $@
$(OBJ)/%.o: $(SRC)/%.cpp
@echo Compiling $< ...
@$(CPP) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
clean:
@echo Deleting object files ...
@rm -f $(AUD_MAINOBJS) $(ALL_LIBS) $(ALLOBJS)
@echo Deleting executable files ...
@rm -f smpsplay
@echo Done.
#.PHONY: all clean install uninstall