
# Copyright (c) 2017-2025
# Distributed Systems Software.  All rights reserved.
# See the file COPYING for redistribution information.
#
# $Id: Makefile 3401 2025-10-01 23:49:08Z brachman $

# Define JSPR_COMPACT if the parser should use a more compact
# internal representation for parsed JSON values.
# This is probably advisable only for applications that are very
# space constrained.

.PHONY: all clean lib test

CC = clang
CC = gcc
CFLAGS = -O3 -g -Wall -I. -std=gnu11 -pedantic -fPIC
CFLAGS = -DJSPR_COMPACT -Wall -g -I. -std=gnu11 -pedantic -fPIC
CFLAGS = -Wall -g -I. -std=gnu11 -pedantic -fPIC

LDFLAGS = -L. -ljspr

LIBSRCS = jspr_char.c jspr_io.c jspr_nav.c jspr_parse.c mkargv.c
LIBOBJS = jspr_char.o jspr_io.o jspr_nav.o jspr_parse.o mkargv.o
HEADERS = jspr.h jspr_priv.h

LIB=libjspr.a

all: lib jspr jspr_test

lib: $(LIB)

$(LIB): $(LIBOBJS) $(HEADERS)
	$(AR) rc $@ $(LIBOBJS)

jspr:	$(HEADERS) jspr.c $(LIB)
	$(CC) $(CFLAGS) -o jspr jspr.c $(LDFLAGS)

test: jspr_test
	./jspr_test

jspr_test: $(HEADERS) jspr_test.c $(LIB)
	$(CC) $(CFLAGS) jspr_test.c -o jspr_test $(LDFLAGS)

jspr_colour: $(HEADERS) jspr_colour.c $(LIB)
	$(CC) -DPROG $(CFLAGS) jspr_colour.c -o jspr_colour $(LDFLAGS)

jspr_test.o: jspr_test.c

clean:
	rm -f jspr jspr_test jspr_colour *.o $(LIB)
	rm -f *.core core a.out
	rm -rf jspr.dSYM jspr_test.dSYM

