########################################################################## # Makefile for GLFW on Windows using MinGW32. #------------------------------------------------------------------------- # To compile GLFW using this makefile, run: # make -f Makefile.win32.mgw ########################################################################## PREFIX ?= /usr/i586-mingw32msvc TARGET ?= i586-mingw32msvc- ########################################################################## # GLFW version ########################################################################## VERMAJOR = 2 VERMINOR = 7 ########################################################################## # Compiler settings ########################################################################## CC = gcc CFLAGS = -c -I. -I.. -Wall -O2 CFLAGS_DLL = $(CFLAGS) -mdll -DGLFW_BUILD_DLL -D_GLFW_NO_DLOAD_GDI32 -D_GLFW_NO_DLOAD_WINMM HEADERS = ../../include/GL/glfw.h ../internal.h platform.h ########################################################################## # Library builder settings ########################################################################## # Static library MKLIB = ar LIBFLAGS = -rcs # DLL LINKFLAGS = -s -Wl,--major-image-version,$(VERMAJOR),--minor-image-version,$(VERMINOR) LINKLIBS = -lopengl32 -lwinmm -lgdi32 DLLTOOL = dlltool SED = sed INSTALL = install ########################################################################## # Object files for static 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 \ win32_enable.o \ win32_fullscreen.o \ win32_glext.o \ win32_init.o \ win32_joystick.o \ win32_thread.o \ win32_time.o \ win32_window.o ########################################################################## # Object files for dynamic library ########################################################################## DLLOBJS = \ enable_dll.o \ fullscreen_dll.o \ glext_dll.o \ image_dll.o \ init_dll.o \ input_dll.o \ joystick_dll.o \ stream_dll.o \ tga_dll.o \ thread_dll.o \ time_dll.o \ window_dll.o \ win32_dllmain_dll.o \ win32_enable_dll.o \ win32_fullscreen_dll.o \ win32_glext_dll.o \ win32_init_dll.o \ win32_joystick_dll.o \ win32_thread_dll.o \ win32_time_dll.o \ win32_window_dll.o ########################################################################## # Default: Build static and dynamic versions of GLFW ########################################################################## all: libglfw.a glfw.dll ########################################################################## # Install GLFW header and static library ########################################################################## install: glfw.dll libglfw.a libglfw.pc $(INSTALL) -d $(PREFIX)/bin $(INSTALL) -c glfw.dll $(PREFIX)/bin/glfw.dll $(INSTALL) -d $(PREFIX)/lib $(INSTALL) -c -m 644 libglfw.a $(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 ########################################################################## # Clean up generated files ########################################################################## clean: rm -f $(OBJS) $(DLLOBJS) rm -f libglfw.a libglfwdll.a glfw.dll libglfw.pc ########################################################################## # Rule for building static library ########################################################################## libglfw.a: $(OBJS) $(TARGET)$(MKLIB) $(LIBFLAGS) $@ $(OBJS) $(SYSOBJS) ########################################################################## # Rules for building dynamic library ########################################################################## glfw.dll: $(DLLOBJS) $(TARGET)$(CC) -shared -o $@ -Wl,--output-def,libglfwdll.def $(DLLOBJS) $(LINKLIBS) $(TARGET)$(CC) -shared -o $@ -Wl,--kill-at $(DLLOBJS) $(LINKFLAGS) $(LINKLIBS) $(TARGET)$(DLLTOOL) --kill-at --output-lib libglfwdll.a --dllname $@ --def libglfwdll.def libglfw.pc: libglfw.pc.in $(SED) -e 's,\@PREFIX\@,$(PREFIX),' libglfw.pc.in > libglfw.pc ########################################################################## # Rules for building static library object files ########################################################################## enable.o: ../enable.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../enable.c fullscreen.o: ../fullscreen.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../fullscreen.c glext.o: ../glext.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../glext.c image.o: ../image.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../image.c init.o: ../init.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../init.c input.o: ../input.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../input.c joystick.o: ../joystick.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../joystick.c stream.o: ../stream.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../stream.c tga.o: ../tga.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../tga.c thread.o: ../thread.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../thread.c time.o: ../time.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../time.c window.o: ../window.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ ../window.c win32_enable.o: win32_enable.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ win32_enable.c win32_fullscreen.o: win32_fullscreen.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ win32_fullscreen.c win32_glext.o: win32_glext.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ win32_glext.c win32_init.o: win32_init.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ win32_init.c win32_joystick.o: win32_joystick.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ win32_joystick.c win32_thread.o: win32_thread.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ win32_thread.c win32_time.o: win32_time.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ win32_time.c win32_window.o: win32_window.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS) -o $@ win32_window.c ########################################################################## # Rules for building dynamic library object files ########################################################################## enable_dll.o: ../enable.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../enable.c fullscreen_dll.o: ../fullscreen.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../fullscreen.c glext_dll.o: ../glext.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../glext.c image_dll.o: ../image.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../image.c init_dll.o: ../init.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../init.c input_dll.o: ../input.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../input.c joystick_dll.o: ../joystick.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../joystick.c stream_dll.o: ../stream.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../stream.c tga_dll.o: ../tga.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../tga.c thread_dll.o: ../thread.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../thread.c time_dll.o: ../time.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../time.c window_dll.o: ../window.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ ../window.c win32_dllmain_dll.o: win32_dllmain.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ win32_dllmain.c win32_enable_dll.o: win32_enable.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ win32_enable.c win32_fullscreen_dll.o: win32_fullscreen.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ win32_fullscreen.c win32_glext_dll.o: win32_glext.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ win32_glext.c win32_init_dll.o: win32_init.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ win32_init.c win32_joystick_dll.o: win32_joystick.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ win32_joystick.c win32_thread_dll.o: win32_thread.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ win32_thread.c win32_time_dll.o: win32_time.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ win32_time.c win32_window_dll.o: win32_window.c $(HEADERS) $(TARGET)$(CC) $(CFLAGS_DLL) -o $@ win32_window.c