Makefile   [plain text]


# name of executable to build
EXECUTABLE=nisccSimpleClient
# C++ source (with .cpp extension)
CPSOURCE= nisccSimpleClient.cpp
# C source (.c extension)
CSOURCE=

#
# Differs from standard clxutils since ../ is not clxutils....
#
CL_UTIL_DIR=../../../

OUR_INCLUDES=-I$(CL_UTIL_DIR)/clAppUtils 

#
# Note final load with cc, not ld
#
# project-specific libraries, e.g., -lstdc++
#
PROJ_LIBS=
#
# Optional lib search paths
#
PROJ_LIBPATH=
#
# choose one for cc
#
VERBOSE=
#VERBOSE=-v

#
# Other files to remove at 'make clean' time
#
OTHER_TO_CLEAN=

#
# non-standard frameworks (e.g., -framework foo)
#
PROJ_FRAMEWORKS= -framework CoreFoundation
#
# project-specific includes, with leading -I
#
PROJ_INCLUDES= 

#
# Optional C flags (warnings, optimizations, etc.)
#
PROJ_CFLAGS=

#
# Optional link flags (using cc, not ld)
#
PROJ_LDFLAGS=

#
# Optional dependencies
#
PROJ_DEPENDS=

#include ../Makefile.cdsa
############################################################################
# We just include our custom version of Makefile.cdsa intact right here....
############################################################################
#
# Common makefile fragment for dmitch's clxutils, nisccSimpleClient variant
# This is -included from project-specific Makefiles, assumed
# to be one directory down from this file.
#
# See Makefile.template for sample project-specific Makefile.
#

# Defaults for variables provided by buildit
# 
# Object files written to '.' unless OBJROOT specified
#
OBJROOT ?= .
SRCROOT ?= .
#
# Executables written to SYMROOT if specified, else to LOCAL_BUILD_DIR
# env var if specified, else to '.'.
#
SYMROOT ?= $(shell echo $(LOCAL_BUILD_DIR))
LOCAL_BUILD=$(SYMROOT)
ifeq "" "$(LOCAL_BUILD)"
	LOCAL_BUILD = .
endif

# independent of SYMROOT
CLEAN_DIR=$(shell echo $(LOCAL_BUILD_DIR))
ifeq "" "$(CLEAN_DIR)"
	CLEAN_DIR = .
endif

#
# DSTROOT only used for install
$
DSTROOT ?= ""

INSTALLDIR := $(DSTROOT)/usr/local/bin

CLAPP_UTILS= ../../..
UTIL_LIB_SRC= ../../../clAppUtils

OFILES= $(CSOURCE:%.c=$(OBJROOT)/%.o) $(CPSOURCE:%.cpp=$(OBJROOT)/%.o) 

#
# Assume final load with cc, not ld
#
STD_LIBS=-lclutils -lcsputils
STD_LIBPATH= -L$(LOCAL_BUILD) $(UTILLIB_PATH) -L$(UTIL_LIB_SRC) 
ALL_LIBS= $(STD_LIBS) $(PROJ_LIBS)
ALL_LIBPATHS= $(STD_LIBPATH) $(PROJ_LIBPATH) 
PRIV_FRAMEWORK_PATH= /System/Library/PrivateFrameworks

#
# Override this from the make command line to add e.g. -lMallocDebug
#
CMDLINE_LDFLAGS=

ALL_LDFLAGS= $(CMDLINE_LDFLAGS) $(ALL_LIBS) $(ALL_LIBPATHS) $(PROJ_LDFLAGS) \
	-F$(LOCAL_BUILD) -F$(PRIV_FRAMEWORK_PATH)

CC=c++

STD_FRAMEWORKS= -framework Security -framework CoreFoundation -framework security_cdsa_utils
ALL_FRAMEWORKS= $(STD_FRAMEWORKS) $(PROJ_FRAMEWORKS)

#
# to get to headers in frameworks
#
STD_FINCLUDES= -F$(LOCAL_BUILD) -F$(PRIV_FRAMEWORK_PATH)
#
# the common headers for csputils
#
STD_INCLUDES= -I$(CLAPP_UTILS) $(UTILLIB_HDRS) -F$(PRIV_FRAMEWORK_PATH) 
ALL_INCLUDES= $(STD_INCLUDES) $(PROJ_INCLUDES)
CINCLUDES= $(STD_FINCLUDES) $(ALL_INCLUDES)

###WFLAGS= -Wno-four-char-constants -Wall -Werror -Wno-format
WFLAGS= -Wno-four-char-constants -Wall  -Wno-format -Wno-deprecated-declarations

STD_CFLAGS= -g  $(VERBOSE) 
DEBUG_CFLAGS=

ALL_CFLAGS= $(CINCLUDES) $(STD_CFLAGS) $(PROJ_CFLAGS) $(WFLAGS) $(DEBUG_CFLAGS)

#
# Executable in build folder
#
BUILT_TARGET= $(LOCAL_BUILD)/$(EXECUTABLE)

first:	UTIL_LIB $(PROJ_DEPENDS) $(BUILT_TARGET)

build: first

install: build
	install -d -m 0755 $(INSTALLDIR)
	install -p -m 0755 $(BUILT_TARGET) $(INSTALLDIR)

installhdrs:

#
# Executable might be in . if no LOCAL_BUILD_DIR specified
#
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)

UTIL_LIB:
	(cd $(UTIL_LIB_SRC); make)

$(BUILT_TARGET):	$(OFILES) 
	$(CC) -o $(BUILT_TARGET) $(ALL_FRAMEWORKS) $^ $(ALL_LDFLAGS)

$(OBJROOT)/%.o: %.c
	$(CC) $(ALL_CFLAGS) -c -o $(OBJROOT)/$*.o $<

$(OBJROOT)/%.o: %.cpp
	$(CC) $(ALL_CFLAGS) -c -o $(OBJROOT)/$*.o $<