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