#
# Makefile for libljacklm
#
#

UNAME = $(shell uname -s)

VERSION = 1.20.2
PREFIX ?= /usr/local
DESTINATION = $(PREFIX)/lib
HEADER = ljacklm.h
HEADER_DESTINATION = $(PREFIX)/include
LIBFLAGS = -llabjackusb -lm -lc

ifeq ($(UNAME),Darwin)
	# Mac OS X operating system macros
	ext = dylib
	TARGET = libljacklm-$(VERSION).$(ext)

	# Build for multiple architectures
	#ARCHFLAGS = -arch i386 -arch x86_64 -arch ppc

	# Build for 32- and 64-bit Intel architectures
	#ARCHFLAGS = -arch i386 -arch x86_64

	# Build for only the host architecture
	ARCHFLAGS =

	COMPILE = libtool -dynamic -o $(TARGET) -install_name $(TARGET) -current_version $(VERSION) -compatibility_version $(VERSION) ljacklm.o $(LIBFLAGS)

	RUN_LDCONFIG ?= 0
	LINK_LIB ?= 1
else
	# Linux operating system macros
	ext = so
	TARGET = libljacklm.$(ext).$(VERSION)

	# Build for only the host architecture
	ARCHFLAGS =

	COMPILE = $(CC) -shared -Wl,-soname,libljacklm.$(ext) -o $(TARGET) ljacklm.o $(LIBFLAGS)

	RUN_LDCONFIG ?= 1
	LINK_LIB ?= 0
endif

CFLAGS += -fPIC -g -Wall $(ARCHFLAGS)

%.o: %.c
	$(CC) $(CFLAGS) -c $<

all: $(TARGET)

$(TARGET): ljacklm.o $(HEADER)
	$(COMPILE)

install: $(TARGET)
	test -z $(DESTINATION) || mkdir -p $(DESTINATION)
	install $(TARGET) $(DESTINATION)
	test -z $(HEADER_DESTINATION) || mkdir -p $(HEADER_DESTINATION)
	install $(HEADER) $(HEADER_DESTINATION)

ifeq ($(RUN_LDCONFIG),1)
	/sbin/ldconfig $(DESTINATION)
endif
ifeq ($(LINK_LIB),1)
	ln -i -s $(DESTINATION)/$(TARGET) $(DESTINATION)/libljacklm.$(ext)
endif

clean:
	rm -f $(TARGET) *.o *~ libljacklm.*
