1# 2# Common makefile fragment for dmitch's cspxutils. 3# This is -included from project-specific Makefiles, assumed 4# to be one directory down from this file. 5# 6# See Makefile.template for sample project-specific Makefile. 7# 8 9# Defaults for variables provided by buildit 10# 11# Object files written to '.' unless OBJROOT specified 12# 13OBJROOT ?= . 14SRCROOT ?= . 15# 16# Executables written to SYMROOT if specified, else to LOCAL_BUILD_DIR 17# env var if specified, else to '.'. 18# 19SYMROOT ?= $(shell echo $(LOCAL_BUILD_DIR)) 20LOCAL_BUILD=$(SYMROOT) 21ifeq "" "$(LOCAL_BUILD)" 22 LOCAL_BUILD = . 23endif 24 25CC=c++ 26 27# independent of SYMROOT 28CLEAN_DIR=$(shell echo $(LOCAL_BUILD_DIR)) 29ifeq "" "$(CLEAN_DIR)" 30 CLEAN_DIR = . 31endif 32 33# 34# DSTROOT only used for install 35$ 36DSTROOT ?= "" 37 38INSTALLDIR := $(DSTROOT)/usr/local/bin 39 40# 41# Sphinx can be overridden, else null 42# To use this source tree to test non-Sphinx code (I.e., SUJagGreen only, 43# uncomment the following: 44SPHINX ?= 45# and comment out this, which makes Sphinx the default: 46# SPHINX=-DSPHINX 47 48UTIL_LIB_SRC= ../utilLib 49UTIL_LIB_BIN= libcsputils.a 50 51# libcsputils comes from ../cspxutils, or from DSTROOT if it's specified 52ifeq ("", $(DSTROOT)) 53 CSPUTIL_PATH=$(UTIL_LIB_SRC) 54 UTIL_LIB_BIN_PATH=$(LOCAL_BUILD)/$(UTIL_LIB_BIN) 55else 56 CSPUTIL_PATH=$(DSTROOT)/usr/local/lib 57 UTIL_LIB_BIN_PATH=$(CSPUTIL_PATH)/$(UTIL_LIB_BIN) 58endif 59 60OFILES= $(CSOURCE:%.c=$(OBJROOT)/%.o) $(CPSOURCE:%.cpp=$(OBJROOT)/%.o) 61 62# 63# Assume final load with cc, not ld 64# 65STD_LIBS=-lcsputils -lsecurity_cdsa_client -lsecurity_utilities -lsecurity_cdsa_utilities -lsecurity_cdsa_utils 66STD_LIBPATH= -L$(LOCAL_BUILD) -L$(CSPUTIL_PATH) 67ALL_LIBS= $(STD_LIBS) $(PROJ_LIBS) 68ALL_LIBPATHS= $(STD_LIBPATH) $(PROJ_LIBPATH) 69PRIV_FRAMEWORK_PATH= /System/Library/PrivateFrameworks 70 71# 72# Override this from the make command line to add e.g. -lMallocDebug 73# 74CMDLINE_LDFLAGS?= 75 76# 77ALL_LDFLAGS= $(CMDLINE_LDFLAGS) -F$(LOCAL_BUILD) $(ALL_LIBS) $(ALL_LIBPATHS) \ 78 $(PROJ_LDFLAGS) -F$(PRIV_FRAMEWORK_PATH) 79 80STD_FRAMEWORKS= -framework Security -framework CoreFoundation 81 82ALL_FRAMEWORKS= $(STD_FRAMEWORKS) $(PROJ_FRAMEWORKS) 83 84# 85# to get to headers in frameworks - may not be necessary 86# 87STD_FINCLUDES= -F$(LOCAL_BUILD) -F$(PRIV_FRAMEWORK_PATH) -F$(PIECES_FRAMEWORK_PATH) -F$(COMPS_FRAMEWORK_PATH) 88 89STD_INCLUDES= -I../utilLib 90ALL_INCLUDES= $(STD_INCLUDES) $(PROJ_INCLUDES) 91CINCLUDES= $(STD_FINCLUDES) $(ALL_INCLUDES) 92 93###WFLAGS= -Wno-four-char-constants -Wall -Werror 94WFLAGS= -Wno-four-char-constants -Wall -Wno-deprecated-declarations 95STD_CFLAGS= -g $(VERBOSE) $(SPHINX) 96DEBUG_CFLAGS?= 97PROJ_CFLAGS?= -fvisibility=hidden 98 99ALL_CFLAGS= $(CINCLUDES) $(STD_CFLAGS) $(PROJ_CFLAGS) $(WFLAGS) $(DEBUG_CFLAGS) 100 101# 102# Executable in SYMROOT, build folder, '.' in that order 103# 104BUILT_TARGET= $(LOCAL_BUILD)/$(EXECUTABLE) 105 106first: UTIL_LIB $(PROJ_DEPENDS) $(BUILT_TARGET) 107 108build: first 109 110debug: 111 make "VARIANT_SUFFIX=,_debug" 112 113sphinx: 114 make "SPHINX=-DSPHINX" 115 116# architecture options 117 11864bit: 119 make "DEBUG_CFLAGS=-arch x86_64" "CMDLINE_LDFLAGS=-arch x86_64" 120 12164bitFat: 122 make "DEBUG_CFLAGS=-arch x86_64 -arch i386" "CMDLINE_LDFLAGS=-arch x86_64 -arch i386" 123 124fat: 125 make "DEBUG_CFLAGS=-arch i386" "CMDLINE_LDFLAGS=-arch i386" 126 127install: build 128 install -d -m 0755 $(INSTALLDIR) 129 install -p -m 0755 $(BUILT_TARGET) $(INSTALLDIR) 130 131installhdrs: 132 133# 134# Executable might be in . if no LOCAL_BUILD_DIR specified 135# 136clean: 137 rm -f $(BUILT_TARGET) $(EXECUTABLE) 138 cd $(SRCROOT); rm -f $(OFILES) *.o 139 cd $(LOCAL_BUILD); rm -f $(EXECUTABLE) $(OTHER_TO_CLEAN) 140 rm -f $(CLEAN_DIR)/$(EXECUTABLE) 141 142UTIL_LIB: 143 (cd $(UTIL_LIB_SRC); make) 144 145$(BUILT_TARGET): $(OFILES) $(UTIL_LIB_BIN_PATH) 146 $(CC) -o $(BUILT_TARGET) $(ALL_FRAMEWORKS) $^ $(ALL_LDFLAGS) 147 148$(OBJROOT)/%.o: %.c 149 $(CC) $(ALL_CFLAGS) -c -o $(OBJROOT)/$*.o $< 150 151$(OBJROOT)/%.o: %.cpp 152 $(CC) $(ALL_CFLAGS) -c -o $(OBJROOT)/$*.o $< 153