OBJ = cJSON.o
LIBNAME = libcjson
TESTS = test

PREFIX ?= /usr/local
INCLUDE_PATH ?= include/cjson
LIBRARY_PATH ?= lib

INSTALL_INCLUDE_PATH = $(DESTDIR)$(PREFIX)/$(INCLUDE_PATH)
INSTALL_LIBRARY_PATH = $(DESTDIR)$(PREFIX)/$(LIBRARY_PATH)

INSTALL ?= cp -a

R_CFLAGS = -fpic $(CFLAGS) -Wall -Werror -Wstrict-prototypes -Wwrite-strings -D_POSIX_C_SOURCE=200112L

uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo false')

## shared lib
DYLIBNAME = $(LIBNAME).so 
DYLIBCMD = $(CC) -shared -o $(DYLIBNAME)

## create dynamic (shared) library on Darwin (base OS for MacOSX and IOS)
ifeq (Darwin, $(uname_S))
  DYLIBNAME = $(LIBNAME).dylib
## create dyanmic (shared) library on SunOS
else ifeq (SunOS, $(uname_S))
  DYLIBCMD = $(CC) -G -o $(DYLIBNAME)
  INSTALL = cp -r
endif

## static lib
STLIBNAME = $(LIBNAME).a

.PHONY: all clean install

all: $(DYLIBNAME) $(STLIBNAME) $(TESTS)

$(DYLIBNAME): $(OBJ)
		$(DYLIBCMD) $< $(LDFLAGS)
	
$(STLIBNAME): $(OBJ)
		ar rcs $@ $<

$(OBJ): cJSON.c cJSON.h 

.c.o:
		$(CC) -ansi -pedantic -c $(R_CFLAGS) $<

$(TESTS): cJSON.c cJSON.h test.c
		$(CC)  cJSON.c test.c -o test -lm -I.

install: $(DYLIBNAME) $(STLIBNAME)
		mkdir -p $(INSTALL_LIBRARY_PATH) $(INSTALL_INCLUDE_PATH)
		$(INSTALL) cJSON.h $(INSTALL_INCLUDE_PATH)
		$(INSTALL) $(DYLIBNAME) $(INSTALL_LIBRARY_PATH)
		$(INSTALL) $(STLIBNAME) $(INSTALL_LIBRARY_PATH)

uninstall:
		rm -rf $(INSTALL_LIBRARY_PATH)/$(DYLIBNAME)
		rm -rf $(INSTALL_LIBRARY_PATH)/$(STLIBNAME)
		rm -rf $(INSTALL_INCLUDE_PATH)/cJSON.h

clean: 
		rm -rf $(DYLIBNAME) $(STLIBNAME) $(TESTS) *.o
