180 lines
5.6 KiB
Makefile

##########################################################################
# Makefile for GLFW on Cocoa on Mac OS X using Apple GCC
#-------------------------------------------------------------------------
# To compile GLFW using this makefile, run:
# make -f Makefile.cocoa
##########################################################################
##########################################################################
# Installation prefix (default to /usr/local)
##########################################################################
PREFIX ?= /usr/local
##########################################################################
# Default: Build GLFW static and shared library
##########################################################################
all: libglfw.a libglfw.dylib
##########################################################################
# Compiler settings
##########################################################################
CC ?= cc
CFLAGS ?= -O2 -g
CFLAGS += -c -I. -I.. -Wall -fno-common
##########################################################################
# Library builder settings
##########################################################################
AR = ar
SED = sed
INSTALL = install
ARFLAGS = -rcs
RANLIB = ranlib
DYLIBFLAGS = -framework Cocoa -framework OpenGL -framework IOKit \
-dynamiclib -Wl,-single_module -compatibility_version 1 \
-current_version 1 -install_name @executable_path/libglfw.dylib
HEADERS = ../../include/GL/glfw.h ../internal.h platform.h
##########################################################################
# Install GLFW header and static library
##########################################################################
install: libglfw.a libglfw.pc
$(INSTALL) -d $(PREFIX)/lib
$(INSTALL) -c -m 644 libglfw.a $(PREFIX)/lib/libglfw.a
$(RANLIB) $(PREFIX)/lib/libglfw.a
$(INSTALL) -d $(PREFIX)/include/GL
$(INSTALL) -c -m 644 ../../include/GL/glfw.h $(PREFIX)/include/GL/glfw.h
$(INSTALL) -d $(PREFIX)/lib/pkgconfig
$(INSTALL) -c -m 644 libglfw.pc $(PREFIX)/lib/pkgconfig/libglfw.pc
##########################################################################
# Install GLFW header and static and dynamic libraries
##########################################################################
dist-install: libglfw.dylib install
$(INSTALL) -c -m 644 libglfw.dylib $(PREFIX)/lib/libglfw.dylib
##########################################################################
# Object files for the GLFW library
##########################################################################
OBJS = \
enable.o \
fullscreen.o \
glext.o \
image.o \
init.o \
input.o \
joystick.o \
stream.o \
tga.o \
thread.o \
time.o \
window.o \
cocoa_enable.o \
cocoa_fullscreen.o \
cocoa_glext.o \
cocoa_init.o \
cocoa_joystick.o \
cocoa_thread.o \
cocoa_time.o \
cocoa_window.o
##########################################################################
# Rule for building libglfw.pc
##########################################################################
libglfw.pc: libglfw.pc.in
$(SED) -e 's,\@PREFIX\@,$(PREFIX),' libglfw.pc.in > libglfw.pc
##########################################################################
# Rule for building static library
##########################################################################
libglfw.a: $(OBJS)
$(AR) $(ARFLAGS) $@ $(OBJS)
$(RANLIB) $@
##########################################################################
# Rule for building shared library
##########################################################################
libglfw.dylib: $(OBJS)
$(CC) -o $@ $(DYLIBFLAGS) $(OBJS)
##########################################################################
# Rule for cleaning up generated files
##########################################################################
clean:
rm -f $(OBJS) libglfw.a libglfw.dylib libglfw.pc
##########################################################################
# Rules for building library object files
##########################################################################
enable.o: ../enable.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../enable.c
fullscreen.o: ../fullscreen.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../fullscreen.c
glext.o: ../glext.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../glext.c
image.o: ../image.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../image.c
init.o: ../init.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../init.c
input.o: ../input.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../input.c
joystick.o: ../joystick.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../joystick.c
stream.o: ../stream.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../stream.c
tga.o: ../tga.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../tga.c
thread.o: ../thread.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../thread.c
time.o: ../time.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../time.c
window.o: ../window.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ ../window.c
cocoa_enable.o: cocoa_enable.m $(HEADERS)
$(CC) $(CFLAGS) -o $@ cocoa_enable.m
cocoa_fullscreen.o: cocoa_fullscreen.m $(HEADERS)
$(CC) $(CFLAGS) -o $@ cocoa_fullscreen.m
cocoa_glext.o: cocoa_glext.m $(HEADERS)
$(CC) $(CFLAGS) -o $@ cocoa_glext.m
cocoa_init.o: cocoa_init.m $(HEADERS)
$(CC) $(CFLAGS) -o $@ cocoa_init.m
cocoa_joystick.o: cocoa_joystick.m $(HEADERS)
$(CC) $(CFLAGS) -o $@ cocoa_joystick.m
cocoa_thread.o: cocoa_thread.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ cocoa_thread.c
cocoa_time.o: cocoa_time.m $(HEADERS)
$(CC) $(CFLAGS) -o $@ cocoa_time.m
cocoa_window.o: cocoa_window.m $(HEADERS)
$(CC) $(CFLAGS) -o $@ cocoa_window.m