-
Notifications
You must be signed in to change notification settings - Fork 138
/
Makefile.library
184 lines (145 loc) · 5.6 KB
/
Makefile.library
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
##
## Makefile to compile Midifile library.
##
## Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu>
## Creation Date: Sun Apr 3 00:51:10 PST 2005
## Last Modified: Mon Feb 9 12:20:53 PST 2015
## Filename: midifile/Makefile.library
## Website: http://midifile.sapp.org
## Syntax: GNU Makefile
##
## Description: This Makefile creates the Midifile library
## (lib/libmidifile.a).
##
## To run this makefile, type (without quotes) "make -f Makefile.library",
## Although it is intended to be used by the file "Makefile" which runs this
## makefile with the command "make library". After the library file is
## created, you can compile specific programs with the Makefile.examples
## file.
##
## NB: To build on Windows with Visual Studio, use visual-studio/midifile.sln
## instead of this Makefile.
##
##############################
##
## Operating-system specific settings:
##
ARCH =
ENV =
OSTYPE =
ifeq ($(shell uname),Darwin)
# This is an Apple OS X computer.
OSTYPE = OSX
# The MACOSX_DEPLOYMENT_TARGET allows you to compile on newer OS X computers,
# but allows the code to run on older OS X computers. In this case the
# minimum OS version target will be 10.6:
ENV = MACOSX_DEPLOYMENT_TARGET=10.9
# The ARCH setting below forces the library to be compiled for
# 32-bit architectures in OS X. Uncomment the ARCH variable below
# if compiling on a 64-bit computer, but you want 32-bit version
# (for linking with other 32-bit libraries).
#ARCH = -m32 -arch i386
else
# This is probably a linux computer.
OSTYPE = LINUX
# The ARCH variable has to be set up slightly different for 32-bit compiling:
#ARCH = -m32
endif
##############################
##
## User-modifiable configuration variables:
##
OBJDIR = obj
SRCDIR = src
INCDIR = include
LIBDIR = lib
LIBFILE = libmidifile.a
DYLIBFILE = libmidifile.dylib
COMPILER = LANG=C $(ENV) g++ $(ARCH)
AR = ar
RANLIB = ranlib
DEFINES =
PREFLAGS = -c -g -Wall -O3 $(DEFINES) -I$(INCDIR)
# Using C++ 2011 standard:
PREFLAGS += -std=c++11
# MinGW compiling setup (used to compile for Microsoft Windows but actual
# compiling is usually done in Linux). You have to install MinGW and these
# variables will probably have to be changed to the correct paths:
#COMPILER = /opt/xmingw/bin/i386-mingw32msvc-g++
#AR = /opt/xmingw/bin/i386-mingw32msvc-ar
#RANLIB = /opt/xmingw/bin/i386-mingw32msvc-ranlib
#OBJDIR = obj-win
#LIBDIR = lib-win
# #
# End of user-modifiable variables. #
# #
###########################################################################
# setting up the directory paths to search for dependency files
vpath %.h $(INCDIR):$(SRCDIR)
vpath %.cpp $(SRCDIR):$(INCDIR)
vpath %.o $(OBJDIR)
# generating a list of the object files
OBJS = $(notdir $(patsubst %.cpp,%.o,$(wildcard $(SRCDIR)/*.cpp)))
##############################
##
## Targets:
##
# targets which don't actually refer to files
.PHONY : all clean makedirs
all: makedirs $(OBJS)
ifeq ($(OSTYPE),OSX)
@echo "Creating midifile library file for OSX (Intel)..."
-rm -f $(LIBDIR)/$(LIBFILE)
-rm -f $(LIBDIR)/$(DYLIBFILE)
$(AR) r $(LIBDIR)/$(LIBFILE) $(OBJDIR)/*.o
$(RANLIB) $(LIBDIR)/$(LIBFILE)
# @$(COMPILER) -dynamiclib -o $(LIBDIR)/$(DYLIBFILE) $(OBJDIR)/*.o
else
@echo "Creating midifile library file for linux ..."
-rm -f $(LIBDIR)/$(LIBFILE)
$(AR) r $(LIBDIR)/$(LIBFILE) $(OBJDIR)/*.o
$(RANLIB) $(LIBDIR)/$(LIBFILE)
endif
clean:
@echo Erasing object files:
-rm -f $(OBJDIR)/*.o
@echo Erasing obj directory:
-rmdir $(OBJDIR)
makedirs:
@-mkdir -p $(OBJDIR)
@-mkdir -p $(LIBDIR)
##############################
##
## Default target:
##
%.o : %.cpp
@echo [CC] $@
@$(COMPILER) $(PREFLAGS) -o $(OBJDIR)/$(notdir $@) $<
###########################################################################
# #
# Dependencies -- generated with the following command in #
# the source directory (in bash shell): #
# #
# cd src
# for i in *.cpp #
# do #
# cc -I../include -MM $i | sed 's/\.\.\/include\///g' #
# echo "" #
# done #
# #
# Or in a csh-type shell (such as tcsh): #
# #
# cd src
# foreach i (*.cpp) #
# cc -I../include -MM $i | sed 's/\.\.\/include\///g' #
# echo "" #
# end #
# #
Binasc.o: Binasc.cpp Binasc.h
MidiEvent.o: MidiEvent.cpp MidiEvent.h MidiMessage.h
MidiEventList.o: MidiEventList.cpp MidiEventList.h \
MidiEvent.h MidiMessage.h
MidiFile.o: MidiFile.cpp MidiFile.h MidiEventList.h \
MidiEvent.h MidiMessage.h Binasc.h
MidiMessage.o: MidiMessage.cpp MidiMessage.h
Options.o: Options.cpp Options.h