os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/macosx/Makefile
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 ########################################################################################################
     2 #
     3 # Makefile wrapper to build tcl on Mac OS X in a way compatible with the tk/macosx Xcode buildsystem
     4 #	uses the standard unix build system in tcl/unix (which can be used directly instead of this
     5 #	if you are not using the tk/macosx projects).
     6 #
     7 # Copyright (c) 2002-2007 Daniel A. Steffen <das@users.sourceforge.net>
     8 #
     9 # See the file "license.terms" for information on usage and redistribution of
    10 # this file, and for a DISCLAIMER OF ALL WARRANTIES.
    11 #
    12 # RCS: @(#) $Id: Makefile,v 1.5.2.17 2007/04/29 02:21:33 das Exp $
    13 #
    14 ########################################################################################################
    15 
    16 #-------------------------------------------------------------------------------------------------------
    17 # customizable settings
    18 
    19 DESTDIR			?=
    20 INSTALL_ROOT		?= ${DESTDIR}
    21 
    22 BUILD_DIR		?= ${CURDIR}/../../build
    23 SYMROOT			?= ${BUILD_DIR}/${PROJECT}
    24 OBJROOT			?= ${SYMROOT}
    25 
    26 EXTRA_CONFIGURE_ARGS	?=
    27 EXTRA_MAKE_ARGS		?=
    28 
    29 INSTALL_PATH		?= /Library/Frameworks
    30 PREFIX			?= /usr/local
    31 BINDIR			?= ${PREFIX}/bin
    32 LIBDIR			?= ${INSTALL_PATH}
    33 MANDIR			?= ${PREFIX}/man
    34 
    35 # set to non-empty value to install manpages in addition to html help:
    36 INSTALL_MANPAGES	?=
    37 
    38 #-------------------------------------------------------------------------------------------------------
    39 # meta targets
    40 
    41 meta			:= all install embedded install-embedded clean distclean test
    42 
    43 styles			:= develop deploy
    44 
    45 all			:= ${styles}
    46 all			: ${all}
    47 
    48 install			:= ${styles:%=install-%}
    49 install			: ${install}
    50 install-%:		action := install-
    51 
    52 embedded		:= ${styles:%=embedded-%}
    53 embedded		: embedded-deploy
    54 install-embedded	:= ${embedded:%=install-%}
    55 install-embedded	: install-embedded-deploy
    56 
    57 clean			:= ${styles:%=clean-%}
    58 clean			: ${clean}
    59 clean-%:		action := clean-
    60 distclean		:= ${styles:%=distclean-%}
    61 distclean		: ${distclean}
    62 distclean-%:		action := distclean-
    63 
    64 test			:= ${styles:%=test-%}
    65 test			: ${test}
    66 test-%:			action := test-
    67 
    68 targets			:= $(foreach v,${meta},${$v})
    69 
    70 #-------------------------------------------------------------------------------------------------------
    71 # build styles
    72 
    73 BUILD_STYLE		=
    74 CONFIGURE_ARGS		=
    75 OBJ_DIR			= ${OBJROOT}/${BUILD_STYLE}
    76 
    77 develop_make_args	:= BUILD_STYLE=Development CONFIGURE_ARGS=--enable-symbols
    78 deploy_make_args	:= BUILD_STYLE=Deployment INSTALL_TARGET=install-strip \
    79 			   GENERIC_FLAGS=-DNDEBUG
    80 embedded_make_args	:= EMBEDDED_BUILD=1
    81 install_make_args	:= INSTALL_BUILD=1
    82 
    83 ${targets}:
    84 	${MAKE} ${action}${PROJECT} \
    85 	$(foreach s,${styles} embedded install,$(if $(findstring $s,$@),${${s}_make_args}))
    86 
    87 #-------------------------------------------------------------------------------------------------------
    88 # project specific settings
    89 
    90 PROJECT			:= tcl
    91 PRODUCT_NAME		:= Tcl
    92 
    93 UNIX_DIR		:= ${CURDIR}/../unix
    94 VERSION			:= $(shell awk -F= '/^TCL_VERSION/ {print $$2; nextfile}' ${UNIX_DIR}/configure.in)
    95 TCLSH			:= tclsh${VERSION}
    96 
    97 BUILD_TARGET		:= all tcltest
    98 INSTALL_TARGET		:= install
    99 
   100 export CPPROG		:= cp -p
   101 
   102 INSTALL_TARGETS		= install-binaries install-libraries
   103 ifeq (${EMBEDDED_BUILD},)
   104 INSTALL_TARGETS		+= install-private-headers
   105 endif
   106 ifeq (${INSTALL_BUILD}_${EMBEDDED_BUILD}_${BUILD_STYLE},1__Deployment)
   107 INSTALL_TARGETS		+= html-tcl
   108 ifneq (${INSTALL_MANPAGES},)
   109 INSTALL_TARGETS		+= install-doc
   110 endif
   111 endif
   112 
   113 MAKE_VARS		:= INSTALL_ROOT INSTALL_TARGETS VERSION GENERIC_FLAGS
   114 MAKE_ARGS_V		= $(foreach v,${MAKE_VARS},$v='${$v}')
   115 
   116 build-${PROJECT}:	target = ${BUILD_TARGET}
   117 install-${PROJECT}:	target = ${INSTALL_TARGET}
   118 clean-${PROJECT} distclean-${PROJECT} test-${PROJECT}: \
   119 			target = $*
   120 
   121 DO_MAKE			= +${MAKE} -C ${OBJ_DIR} ${target} ${MAKE_ARGS_V} ${MAKE_ARGS} ${EXTRA_MAKE_ARGS}
   122 
   123 #-------------------------------------------------------------------------------------------------------
   124 # build rules
   125 
   126 ${PROJECT}:
   127 	${MAKE} install-${PROJECT} INSTALL_ROOT=${OBJ_DIR}/
   128 
   129 ${OBJ_DIR}/Makefile: ${UNIX_DIR}/Makefile.in ${UNIX_DIR}/configure \
   130 		     ${UNIX_DIR}/tclConfig.sh.in Tcl-Info.plist.in
   131 	mkdir -p ${OBJ_DIR} && cd ${OBJ_DIR} && \
   132 	if [ ${UNIX_DIR}/configure -nt config.status ]; then ${UNIX_DIR}/configure \
   133 	--prefix=${PREFIX} --bindir=${BINDIR} --libdir=${LIBDIR} \
   134 	--mandir=${MANDIR} --enable-threads --enable-framework \
   135 	${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS}; else ./config.status; fi
   136 
   137 build-${PROJECT}: ${OBJ_DIR}/Makefile
   138 	${DO_MAKE}
   139 ifeq (${INSTALL_BUILD},)
   140 # symolic link hackery to trick
   141 # 'make install INSTALL_ROOT=${OBJ_DIR}'
   142 # into building Tcl.framework and tclsh in ${SYMROOT}
   143 	@cd ${OBJ_DIR} && mkdir -p $(dir ./${LIBDIR}) $(dir ./${BINDIR}) ${SYMROOT} && \
   144 	rm -f ./${LIBDIR} ./${BINDIR} && ln -fs ${SYMROOT} ./${LIBDIR} && \
   145 	ln -fs ${SYMROOT} ./${BINDIR} && ln -fs ${OBJ_DIR}/tcltest ${SYMROOT}
   146 endif
   147 
   148 install-${PROJECT}: build-${PROJECT}
   149 ifeq (${EMBEDDED_BUILD}_${INSTALL_ROOT},1_)
   150 	@echo "Cannot install-embedded with empty INSTALL_ROOT !" && false
   151 endif
   152 ifeq (${EMBEDDED_BUILD},1)
   153 	@rm -rf "${INSTALL_ROOT}/${LIBDIR}/Tcl.framework"
   154 endif
   155 	${DO_MAKE}
   156 ifeq (${INSTALL_BUILD},1)
   157 ifeq (${EMBEDDED_BUILD},1)
   158 # if we are embedding frameworks, don't install tclsh
   159 	@rm -f "${INSTALL_ROOT}${BINDIR}/${TCLSH}" && \
   160 	rmdir -p "${INSTALL_ROOT}${BINDIR}" 2>&- || true
   161 else
   162 # redo prebinding (when not building for Mac OS X 10.4 or later only)
   163 	@if [ "`echo "$${MACOSX_DEPLOYMENT_TARGET}" | \
   164 	awk -F '10\\.' '{print int($$2)}'`" -lt 4 -a "`echo "$${CFLAGS}" | \
   165 	awk -F '-mmacosx-version-min=10\\.' '{print int($$2)}'`" -lt 4 ]; \
   166 	then cd ${INSTALL_ROOT}/; \
   167 	if [ ! -d usr/lib ]; then mkdir -p usr && ln -fs /usr/lib usr/ && RM_USRLIB=1; fi; \
   168 	if [ ! -d System ]; then ln -fs /System . && RM_SYSTEM=1; fi; \
   169 	redo_prebinding -r . "./${LIBDIR}/${PRODUCT_NAME}.framework/Versions/${VERSION}/${PRODUCT_NAME}"; \
   170 	redo_prebinding -r . "./${BINDIR}/${TCLSH}"; \
   171 	if [ -n "$${RM_USRLIB:-}" ]; then rm -f usr/lib; rmdir -p usr 2>&-; fi; \
   172 	if [ -n "$${RM_SYSTEM:-}" ]; then rm -f System; fi; fi
   173 # install tclsh symbolic link
   174 	@ln -fs ${TCLSH} ${INSTALL_ROOT}${BINDIR}/tclsh
   175 endif
   176 endif
   177 ifeq (${BUILD_STYLE}_${EMBEDDED_BUILD},Development_)
   178 # keep copy of debug library around, so that
   179 # Deployment build can be installed on top
   180 # of Development build without overwriting
   181 # the debug library
   182 	@cd ${INSTALL_ROOT}${LIBDIR}/${PRODUCT_NAME}.framework/Versions/${VERSION} && \
   183 	ln -f "${PRODUCT_NAME}" "${PRODUCT_NAME}_debug"
   184 endif
   185 
   186 clean-${PROJECT}: %-${PROJECT}:
   187 	${DO_MAKE}
   188 	rm -rf ${SYMROOT}/{${PRODUCT_NAME}.framework,${TCLSH},tcltest}
   189 	rm -f ${OBJ_DIR}{${LIBDIR},${BINDIR}} && \
   190 	rmdir -p ${OBJ_DIR}$(dir ${LIBDIR}) 2>&- || true && \
   191 	rmdir -p ${OBJ_DIR}$(dir ${BINDIR}) 2>&- || true
   192 
   193 distclean-${PROJECT}: %-${PROJECT}: clean-${PROJECT}
   194 	${DO_MAKE}
   195 	rm -rf ${OBJ_DIR}
   196 
   197 test-${PROJECT}: %-${PROJECT}: build-${PROJECT}
   198 	${DO_MAKE}
   199 
   200 #-------------------------------------------------------------------------------------------------------
   201 
   202 .PHONY: ${meta} ${targets} ${PROJECT} build-${PROJECT} install-${PROJECT} \
   203 	clean-${PROJECT} distclean-${PROJECT}
   204 
   205 .NOTPARALLEL:
   206 
   207 #-------------------------------------------------------------------------------------------------------