# Generic Makefile for PARI programs -- sparc64 running freebsd (portable C/GMP-4.3.2 kernel) 64-bit version
#
#  This file was created by Configure. Any change made to it will be
#  lost when Configure is run.
#
# make all will create
#  extgcd-dyn (linked dynamically with libpari)
#  extgcd-sta (linked statically)
#  libextgcd.so (to be used by "install" under GP)
#
# Under GP: install("extgcd", "GG&&", "gcdex", "./libextgcd.so") enables
# you to subsequently use gcdex to call extgcd (see the reference manual).
#

# change this TARGET to compile your own programs
TARGET = extgcd
SHELL  = /bin/sh

DBGFLAGS   = -g -Wall -O3 -Wall -fno-strict-aliasing -fomit-frame-pointer  -O2 -fno-strict-aliasing -pipe 
CFLAGS     = -O3 -Wall -fno-strict-aliasing -fomit-frame-pointer -O3 -Wall -fno-strict-aliasing -fomit-frame-pointer  -O2 -fno-strict-aliasing -pipe 
#CFLAGS    = $(DBGFLAGS)

# Various linkers use different flags to force static compilation. Choose
# the one which is relevant for your installation.
#
# Solaris ld (global)
#STATIC    = -dn

# Solaris ld (toggle: no shared object accepted until -B dynamic is seen
#STATIC    = -B static

# gcc
#STATIC    = -static

CC         = cc
CPPFLAGS   = -I. -I/usr/local/include
LD         = cc
LDFLAGS    = -O3 -Wall -fno-strict-aliasing -fomit-frame-pointer  -O2 -fno-strict-aliasing -pipe  -Wl,--export-dynamic 
MODLD       = cc
MODLDFLAGS  = -shared -mimpure-text $(CFLAGS) $(DLCFLAGS) -Wl,-shared
EXTRAMODLDFLAGS = -lc -lm -L/usr/local/lib -lgmp -L/usr/local/lib -lpari
EXTRALIBS  =

RUNPTH     = -Wl,-rpath,/usr/local/lib
DLCFLAGS   = -fPIC
LIBS       = -lm -L/usr/local/lib -lgmp -L/usr/local/lib -lpari

RM = rm -f


OBJS = $(TARGET).o
DYN = lib$(TARGET).so
ALL = $(TARGET)-sta $(TARGET)-dyn $(DYN)

dft: $(TARGET)-dyn

all: $(ALL)

sta: $(TARGET)-sta

dyn: $(TARGET)-dyn

dynlib: $(DYN)

$(DYN): $(OBJS)
	$(MODLD) -o $@ $(MODLDFLAGS) $(OBJS) $(EXTRAMODLDFLAGS)

$(TARGET)-sta: $(OBJS)
	$(LD) -o $@ $(LDFLAGS) $< $(EXTRALIBS) $(STATIC) $(LIBS)

$(TARGET)-dyn: $(OBJS)
	$(LD) -o $@ $(LDFLAGS) $< $(RUNPTH) $(LIBS)

%.o: %.c
	$(CC) -c $(CFLAGS) $(CPPFLAGS) $(DLCFLAGS) $<
clean:
	-$(RM) *.o $(ALL)
