This makefile differs from a static build in the following ways:
The library filename extension is .dylib
-fPIC is added to compiler flags.
-dynamiclib is added to linker flags.
INSTALL_NAME is set to the full destination path and name of the library, as finally installed.
Without setting install_name it would be necessary to link the library directly into the install folder, or to use the install_name_tool to set this value later. The Xcode linker refers to this value when setting the library load path in your applications.
Please see Building D-ISAM in Xcode from the command line for more details.
# ------------------------------------------------------------------------
# DISAM MAKEFILE
# ------------------------------------------------------------------------
#
# this version is designed to operate from your disam root folder,
# and does NOT require moving everything into a common folder
#
# ------------------------------------------------------------------------
INSTALL_NAME = /Library/Disam72/libdisam72.dylib
ISLIBNAME = disam72
ISLIBWHAT = shared
ISEXTWHAT = dylib
ISCFWHAT = -fPIC
ISLFWHAT =
ISCFOFFB = -D_FILE_OFFSET_BITS=64
ISLFOFFB =
ISBINLIBS =
ISCFLAGS =
ISLFLAGS =
# ------------------------------------------------------------------------
ISINCLUDE = -Ihead -Ibase -Idecs -Iutil -Itest -Iexport
NAME = $(ISLIBNAME)
WHAT = $(ISLIBWHAT)
TYPE = $(ISEXTWHAT)
WHERE= target/$(NAME)_$(WHAT)
ISAM = $(WHERE)/lib/lib$(NAME)
LIBS = -l$(NAME) $(ISBINLIBS)
CFLG = $(ISCFWHAT) $(ISCFOFFB) $(ISCFLAGS) $(CFLAGS)
LFLG = $(ISLFWHAT) $(ISLFOFFB) $(ISLFLAGS) $(LDFLAGS)
BASE = base/isaccess.o \
base/isapface.o \
base/isremote.o \
base/isadmin.o \
base/isaudit.o \
base/isbuild.o \
base/ischeck.o \
base/isclustr.o \
base/iscomp.o \
base/iscustom.o \
base/isdatio.o \
base/isdelete.o \
base/isentry.o \
base/iserase.o \
base/isfree.o \
base/isglobal.o \
base/isgrow.o \
base/ishead.o \
base/isidxdel.o \
base/isidxio.o \
base/isindex.o \
base/isinfo.o \
base/iskey.o \
base/islast.o \
base/islocate.o \
base/islock.o \
base/ismemory.o \
base/ismif.o \
base/isnode.o \
base/isopen.o \
base/ispath.o \
base/isprune.o \
base/isread.o \
base/isrepair.o \
base/issquash.o \
base/isbytes.o \
base/isdebug.o \
base/issystem.o \
base/isnetsys.o \
base/isschema.o \
base/istrans.o \
base/istree.o \
base/isunique.o \
base/isupdate.o \
base/isvarlen.o \
base/iswrite.o
WRAP = wrap/stdbuild.o \
wrap/stdcheck.o \
wrap/stdextra.o \
wrap/stdinfo.o \
wrap/stdlast.o \
wrap/stdlock.o \
wrap/stdmif.o \
wrap/stdread.o \
wrap/stdtrans.o \
wrap/stdwrap.o \
wrap/stdwrite.o
DECS = decs/dec_roun.o \
decs/decadd.o \
decs/deccmp.o \
decs/decconv.o \
decs/deccvasc.o \
decs/decdiv.o \
decs/dececvt.o \
decs/decefcvt.o \
decs/decextra.o \
decs/decfcvt.o \
decs/decmul.o \
decs/decsub.o \
decs/dectoasc.o
CO = $(CC) $(ISINCLUDE) $(CFLG)
CL = $(CC) $(LFLG) -L$(WHERE)/lib
AR = ar
# RANLIB = $(AR) ts
RANLIB = ranlib
.c.o:
$(CO) -c $*.c -o $*.o
$(ISAM).a: $(BASE) $(WRAP) $(DECS)
$(AR) r $(ISAM).$(TYPE) $(BASE) $(WRAP) $(DECS)
$(RANLIB) $(ISAM).$(TYPE)
$(ISAM).dylib: $(BASE) $(WRAP) $(DECS)
$(CO) -dynamiclib $(BASE) $(WRAP) $(DECS) -o $(ISAM).$(TYPE) -install_name $(INSTALL_NAME)
lib: $(ISAM).$(TYPE)
test_A: test/bench.o test/auto.o test/mult.o test/user.o test/lock.o test/dups.o
$(CL) test/auto.o test/bench.o $(LIBS) -o $(WHERE)/bin/auto_test
$(CL) test/mult.o test/bench.o $(LIBS) -o $(WHERE)/bin/mult_test
$(CL) test/user.o test/bench.o $(LIBS) -o $(WHERE)/bin/user_test
$(CL) test/lock.o test/bench.o $(LIBS) -o $(WHERE)/bin/lock_test
$(CL) test/dups.o test/bench.o $(LIBS) -o $(WHERE)/bin/dups_test
test_B: test/mifs.o test/bash.o test/life.o
$(CL) test/mifs.o $(LIBS) -o $(WHERE)/bin/mifs_test
$(CL) test/bash.o $(LIBS) -o $(WHERE)/bin/bash_test
$(CL) test/life.o $(LIBS) -o $(WHERE)/bin/life_test
test: test_A test_B
util_base: util/utility.o util/dcheck.o util/dstats.o util/dpack.o util/dbugscan.o
$(CL) util/dcheck.o util/utility.o $(LIBS) -o $(WHERE)/bin/dcheck
$(CL) util/dstats.o util/utility.o $(LIBS) -o $(WHERE)/bin/dstats
$(CL) util/dpack.o util/utility.o $(LIBS) -o $(WHERE)/bin/dpack
$(CL) util/dbugscan.o $(LIBS) -o $(WHERE)/bin/dbugscan
util_core: util/dsplit.o util/dlist.o util/dschema.o
$(CL) util/dsplit.o util/utility.o $(LIBS) -o $(WHERE)/bin/dsplit
$(CL) util/dlist.o util/utility.o $(LIBS) -o $(WHERE)/bin/dlist
$(CL) util/dschema.o util/utility.o $(LIBS) -o $(WHERE)/bin/dschema
remote: util/disamnet.o util/dswabnet.o
$(CL) util/disamnet.o $(LIBS) -o $(WHERE)/bin/disamnet
$(CL) util/dswabnet.o $(LIBS) -o $(WHERE)/bin/dswabnet
util: util_base util_core
export: export/isreport.o export/isfield.o export/isload.o export/dreport.o
$(CL) export/isreport.o export/isfield.o export/isload.o \
export/dreport.o $(LIBS) -o $(WHERE)/bin/dreport
check: test
$(WHERE)/bin/dstats
$(WHERE)/bin/dcheck
$(WHERE)/bin/mifs_test
$(WHERE)/bin/bash_test
$(WHERE)/bin/dcheck bashfile
$(WHERE)/bin/auto_test
$(WHERE)/bin/dcheck autofile
rm -f autofile.dat autofile.idx
rm -f bashfile.idx bashfile.dat
parts: lib util test check export
squeaky:
rm -rf target/*
clean:
rm -rf base/*.o wrap/*.o decs/*.o test/*.o util/*.o export/*.o server/*.o
new:
rm -rf $(WHERE)
mkdir -p $(WHERE)/lib $(WHERE)/bin
cp head/isconfig.h $(WHERE)
all: squeaky clean new lib util test remote
