# $Id: makefile.cyg,v 1.12 2003/02/01 22:14:50 stas_degteff Exp $ # Makefile for Building SMAPI with Mingw32 for NT. # No support for the Husky build environment. # Uncomment this for compile info for gdb and display more compiler warnings DEBUG = -g -pedantic # Uncomment this for strip all simbols from binaries to reduce file sizes #STRIP = -s ## programs ## #use this line if you are using MINGW32 on a Windows box GCC = gcc AR = ar RANLIB = ranlib #use this line if you are using MINGW32 CPD on a Unix box as cross compiler #CC = i386-mingw32-gcc #AR = i386-mingw32-ar #RANLIB = i386-mingw32-ranlib RM = rm ## file suffixes ## C = .c OBJ = .o LIB = .a EXE = .exe DLL = .dll ## program options ## # compiler defines CDEFS = # common compiler options CFLAGS = -Wall -mno-cygwin -O3 # options for compile only (link is off) OBJOPT = -c # options for build static library LIBOPT = -static # options for build dll DLLOPT = -shared # option for specify output file name NAMEOPT = -o # options for $(AR) program ARFLAGS = rs ## files ## TARGET = libsmapicyg$(LIB) DLLTARGET= smapi$(DLL) # libraries need to build binary file LIBS = ## other, usualy not modify below ## CYGWIN_VERSION = $(shell uname -r) ifeq ( , $(findstring "1.3.9", $(CYGWIN_VERSION)) ) ifeq ( , $(findstring "1.3.10", $(CYGWIN_VERSION)) ) ifeq ( , $(findstring "1.3.11", $(CYGWIN_VERSION)) ) # new cygwin require library mingwex for build with '-mno-cygwin' option LIBS += -lmingwex endif endif endif CFLAGS += $(DEBUG) .PHONY: distclean clean all static dll programs default include makefile.inc default: @echo Run 'make dll' to build dll version \($(DLLTARGET), $(PROGRAMS)\) @echo Run 'make static' to build static version \($(TARGET), $(PROGRAMS)\) @echo Run 'make programs' to build static version of programs \($(PROGRAMS)\) @echo Run 'make all' to build all above all: static dll programs static: $(TARGET) dll: $(DLLTARGET) programs: $(PROGRAMS) %.exe: %.c $(TARGET) $(CC) $(STRIP) $(CFLAGS) $(CDEFS) $(NAMEOPT)$@ $^ $(LIBS) .c.o: $(CC) $(CFLAGS) $(CDEFS) $(OBJOPT) $< $(TARGET): $(OBJS) $(AR) $(ARFLAGS) $(TARGET) $? # $(RANLIB) $(TARGET) # 'ar rs' doing this $(DLLTARGET): $(OBJS) $(CC) $(DLLOPT) $(CFLAGS) $(NAMEOPT)$@ $^ clean: -$(RM) *$(OBJ) distclean: -$(RM) $(DLLTARGET) $(TARGET) $(PROGRAMS)