OBJROOT ?= .
SRCROOT ?= .
SYMROOT ?= $(shell echo $(LOCAL_BUILD_DIR))
LOCAL_BUILD=$(SYMROOT)
ifeq "" "$(LOCAL_BUILD)"
LOCAL_BUILD = .
endif
CLEAN_DIR=$(shell echo $(LOCAL_BUILD_DIR))
ifeq "" "$(CLEAN_DIR)"
CLEAN_DIR = .
endif
$
DSTROOT ?= ""
INSTALLDIR := $(DSTROOT)/usr/local/bin
UTIL_LIB_SRC= ../clAppUtils
COMMON_LIB_SRC= ../../cspxutils
CSPUTIL_LIB_BIN=libcsputils.a
CLUTIL_LIB_BIN=libclutils.a
ifeq ("", $(DSTROOT))
UTILLIB_HDRS=$(COMMON_LIB_SRC)
UTILLIB_PATH=$(COMMON_LIB_SRC)/utilLib
CSPUTIL_LIB_BIN_PATH=$(LOCAL_BUILD)/$(CSPUTIL_LIB_BIN)
CLUTIL_LIB_BIN_PATH=$(LOCAL_BUILD)/$(CLUTIL_LIB_BIN)
else
UTILLIB_HDRS=$(DSTROOT)/usr/local/include
UTILLIB_PATH=$(DSTROOT)/usr/local/lib
CSPUTIL_LIB_BIN_PATH=/usr/local/lib/$(CSPUTIL_LIB_BIN)
CLUTIL_LIB_BIN_PATH=$(UTILLIB_PATH)/$(CLUTIL_LIB_BIN)
endif
OFILES= $(CSOURCE:%.c=$(OBJROOT)/%.o) $(CPSOURCE:%.cpp=$(OBJROOT)/%.o)
STD_LIBS=-lclutils -lcsputils
STD_LIBPATH= -L$(LOCAL_BUILD) -L$(UTILLIB_PATH) -L$(UTIL_LIB_SRC)
ALL_LIBS= $(STD_LIBS) $(PROJ_LIBS)
ALL_LIBPATHS= $(STD_LIBPATH) $(PROJ_LIBPATH)
PRIV_FRAMEWORK_PATH= /System/Library/PrivateFrameworks
CMDLINE_LDFLAGS?=
ALL_LDFLAGS= $(CMDLINE_LDFLAGS) -F$(LOCAL_BUILD) $(ALL_LIBS) $(ALL_LIBPATHS) \
$(PROJ_LDFLAGS) -F$(PRIV_FRAMEWORK_PATH) -lsecurity_cdsa_client -lsecurity_utilities -lsecurity_cdsa_utilities -lsecurity_cdsa_utils
CC=c++
VARIANT_SUFFIX=
STD_FRAMEWORKS= -framework Security$(VARIANT_SUFFIX) -framework CoreFoundation
ALL_FRAMEWORKS= $(STD_FRAMEWORKS) $(PROJ_FRAMEWORKS)
STD_FINCLUDES= -F$(LOCAL_BUILD) -F$(PRIV_FRAMEWORK_PATH) -F$(PRIV_FRAMEWORK_PATH)
STD_INCLUDES= -I.. -I$(UTILLIB_HDRS) -F$(PRIV_FRAMEWORK_PATH)
ALL_INCLUDES= $(STD_INCLUDES) $(PROJ_INCLUDES)
CINCLUDES= $(STD_FINCLUDES) $(ALL_INCLUDES)
WFLAGS= -Wno-four-char-constants -Wall -Wno-deprecated-declarations
STD_CFLAGS= -g $(VERBOSE) $(SPHINX)
DEBUG_CFLAGS?=
ALL_CFLAGS= $(CINCLUDES) $(STD_CFLAGS) $(PROJ_CFLAGS) $(WFLAGS) $(DEBUG_CFLAGS)
BUILT_TARGET= $(LOCAL_BUILD)/$(EXECUTABLE)
first: LIB_CLUTILS $(PROJ_DEPENDS) $(CSPUTIL_LIB_BIN_PATH) $(BUILT_TARGET)
build: first
debug:
make "VARIANT_SUFFIX=,_debug"
sphinx:
make "SPHINX=-DSPHINX"
64bit:
make "DEBUG_CFLAGS=-arch x86_64" "CMDLINE_LDFLAGS=-arch x86_64"
64bitFat:
make "DEBUG_CFLAGS=-arch x86_64 -arch i386" "CMDLINE_LDFLAGS=-arch x86_64 -arch i386"
fat:
make "DEBUG_CFLAGS=-arch i386" "CMDLINE_LDFLAGS=-arch i386"
install: build
install -d -m 0755 $(INSTALLDIR)
install -p -m 0755 $(BUILT_TARGET) $(INSTALLDIR)
installhdrs:
clean:
rm -f $(BUILT_TARGET) $(EXECUTABLE)
cd $(SRCROOT); rm -f $(OFILES) *.o
cd $(LOCAL_BUILD); rm -f $(EXECUTABLE) $(OTHER_TO_CLEAN)
rm -f $(CLEAN_DIR)/$(EXECUTABLE)
$(CSPUTIL_LIB_BIN_PATH):
@if ! ( [ -e $(CSPUTIL_LIB_BIN_PATH) ] );\
then \
echo === You must build libcsputils.a before building this project. === ;\
echo === Please cd to the cspxutils/utilLib directory and type make. === ;\
echo === $(CSPUTIL_LIB_BIN_PATH) not found. === ;\
exit 1; \
fi
LIB_CLUTILS:
(cd $(UTIL_LIB_SRC); make)
$(BUILT_TARGET): $(OFILES) $(CSPUTIL_LIB_BIN_PATH) $(CLUTIL_LIB_BIN_PATH)
$(CC) -o $(BUILT_TARGET) $(ALL_FRAMEWORKS) $^ $(ALL_LDFLAGS)
$(OBJROOT)/%.o: %.c $(HDR_DEPENDS)
$(CC) $(ALL_CFLAGS) -c -o $(OBJROOT)/$*.o $<
$(OBJROOT)/%.o: %.cpp $(HDR_DEPENDS)
$(CC) $(ALL_CFLAGS) -c -o $(OBJROOT)/$*.o $<