# # iniparser Makefile # # source files SRCS = iniparser.c \ dictionary.c # include rules for platform determination include platform.mk # flags for the the various systems ifeq ($(UNAME), Linux) # Compiler settings CC = gcc AR = ar ARFLAGS = rcv SHLD = ${CC} ${CFLAGS} CFLAGS = -O2 -fPIC -Wall -ansi -pedantic LDSHFLAGS = -shared -Wl,-Bsymbolic -Wl,-rpath -Wl,/usr/lib -Wl,-rpath,/usr/lib LDFLAGS = -Wl,-rpath -Wl,/usr/lib -Wl,-rpath,/usr/lib endif ifeq ($(UNAME), Darwin) # Compiler settings CC = gcc # Ar settings to build the library AR = ar ARFLAGS = rcv SHLD = libtool CFLAGS = -v -arch i386 -fPIC -Wall -ansi -pedantic LDFLAGS = -arch_only i386 endif ifeq ($(WIN32), 1) CC = cl CFLAGS = //Od //D "_WIN32" //D "WIN32" //D "_CONSOLE" //D "_CRT_SECURE_NO_WARNINGS" //D "_UNICODE" //D "UNICODE" //Gm //EHsc //RTC1 //MDd //W3 //nologo //c //ZI //TC LDFLAGS = //OUT:"iniparser.lib" //NOLOGO LINK = lib RM = rm -f endif # windows build rules ifeq ($(WIN32), 1) COMPILE.c = $(CC) $(CFLAGS) -c OBJS = $(SRCS:.c=.obj) all: iniparser.obj dictionary.obj iniparser.lib iniparser.obj: dictionary.obj @($(CC) $(CFLAGS) iniparser.c) dictionary.obj: @(echo "compiling dictionary; WIN32: $(WIN32); platform: $(UNAME)") @($(CC) $(CFLAGS) dictionary.c) iniparser.lib: dictionary.obj iniparser.obj @(echo "linking $(OBJS)") @($(LINK) $(LDFLAGS) $(OBJS)) else # *nix (and Mac) build rules RM = rm -f COMPILE.c = $(CC) $(CFLAGS) -c OBJS = $(SRCS:.c=.o) all: libiniparser.a libiniparser.so .c.o: @(echo "platform: $(UNAME), WIN32=$(WIN32); compiling $< ...") @($(COMPILE.c) -o $@ $<) libiniparser.a: $(OBJS) @($(AR) $(ARFLAGS) libiniparser.a $(OBJS)) ifeq ($(UNAME), Linux) libiniparser.so: $(OBJS) @$(SHLD) $(LDSHFLAGS) -o $@.0 $(OBJS) $(LDFLAGS) else libiniparser.so: $(OBJS) @$(SHLD) -o $@.0 $(LDFLAGS) $(OBJS) endif endif clean: $(RM) $(OBJS) libiniparser.*