]> git.sur5r.net Git - bacula/bacula/blob - bacula/platforms/osx/Makefile.in
Backport from Bacula Enterprise
[bacula/bacula] / bacula / platforms / osx / Makefile.in
1 #
2 # Copyright (C) 2000-2015 Kern Sibbald
3 # License: BSD 2-Clause; see file LICENSE-FOSS
4 #
5 # This is the makefile template for the platform directory
6 # which contains general platform installation.
7 #
8 #  17 August 2009 -- Lorenz Schori
9
10 #   for Bacula release @VERSION@ (@DATE@) -- @DISTNAME@
11 #
12
13
14 # bacula version and download site
15 BACULA_VERSION:=@VERSION@
16 BACULA_DL_URL:=http://downloads.sourceforge.net/project/bacula/bacula/${BACULA_VERSION}/bacula-${BACULA_VERSION}.tar.gz
17
18 # Build universal binary. Comment out when building versions of bacula < 3.0.0
19 ARCHFLAGS:=-arch i386 -arch ppc
20 MACOSX_SDK_SYSROOT:=/Developer/SDKs/MacOSX10.4u.sdk
21 MACOSX_VERSION_FLAGS:=-mmacosx-version-min=10.4
22
23 # Tools
24 PM:=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
25 MAKE:=/usr/bin/make
26 CURL:=/usr/bin/curl
27 TAR:=/usr/bin/tar
28
29 ########### you should not have to edit anything beyond this line ###########
30
31 # Build paths
32 DL_DIR:=dl
33 BUILD_DIR:=build
34 PRODUCTS_DIR:=products
35
36 WORKING_DIR:=${BUILD_DIR}/${BACULA_VERSION}
37 BACULA_TAR:=${DL_DIR}/bacula-${BACULA_VERSION}.tar.gz
38 BACULA_SOURCE:=${WORKING_DIR}/bacula-${BACULA_VERSION}
39 BACULA_DESTDIR:=${WORKING_DIR}/destdir
40 BACULA_PREFIX:=/usr/local/bacula-${BACULA_VERSION}
41 BACULA_FD_CONF:=/Library/Preferences/bacula/bacula-fd.conf
42 BACULA_WORKING_DIR:=/private/var/bacula/working
43 BACULA_PMDOC:=${WORKING_DIR}/installer.pmdoc
44
45 # Detect whether we sit inside the Bacula source tree. In this case we won't
46 # download the tar from sourceforge but instead work with what is there
47 # already
48 CURSUB:=$(CURDIR:%/platforms/osx=%)
49 ifneq ($(CURDIR),$(CURSUB))
50         BACULA_TAR:=
51         BACULA_SOURCE:=../../
52 #       BACULA_VERSION:=$(shell sed -n 's,^VERSION=,,p' $(CURSUB)/autoconf/Make.common)
53 endif
54
55 PACKAGE_TITLE:=Bacula File Daemon ${BACULA_VERSION}
56 PACKAGE_ID:=org.bacula.bacula-fd.pkg
57 PACKAGE_DIR:=${PRODUCTS_DIR}/${PACKAGE_TITLE}
58 PACKAGE_BUNDLE:=${PACKAGE_DIR}/${PACKAGE_TITLE}.pkg
59 PACKAGE_DMG:=${PRODUCTS_DIR}/${PACKAGE_TITLE}.dmg
60 PACKAGE_RESOURCES:=ReadMe.html postflight preupgrade
61 PACKAGE_XRESOURCES:=postflight preupgrade
62
63 # Flags for the toolchain
64 CONFIGFLAGS:= \
65   --enable-client-only \
66   --prefix=${BACULA_PREFIX} \
67   --with-dir-password=@DIR_PW@ \
68   --with-fd-password=@FD_PW@ \
69   --with-sd-password=@SD_PW@ \
70   --with-mon-dir-password=@MON_DIR_PW@ \
71   --with-mon-fd-password=@MON_FD_PW@ \
72   --with-mon-sd-password=@MON_SD_PW@ \
73   --with-basename=@BASENAME@ \
74   --with-hostname=@HOSTNAME@ \
75   --with-working-dir=${BACULA_WORKING_DIR}
76 CPPFLAGS:=-isysroot ${MACOSX_SDK_SYSROOT} ${MACOSX_VERSION_FLAGS}
77 CFLAGS:=-O -g ${ARCHFLAGS}
78 CXXFLAGS:=${CFLAGS}
79 LDFLAGS:=-Wl,-syslibroot,${MACOSX_SDK_SYSROOT} ${MACOSX_VERSION_FLAGS} ${ARCHFLAGS}
80
81 # required on snow leopard: compiling for 10.4 requires usage of gcc 4.0
82 # system defaults to version 4.2
83 CC:=gcc-4.0
84 CPP:=cpp-4.0
85 CXX:=g++-4.0
86 CXXPP:=cpp-4.0
87
88 # Placeholders for *.in files
89 INFILE_SUBST=\
90   -e "s,@PREFIX@,${BACULA_PREFIX},g" \
91   -e "s,@BACULA_VERSION@,${BACULA_VERSION},g" \
92   -e "s,@FD_CONF@,${BACULA_FD_CONF},g" \
93   -e "s,@BACULA_DESTDIR@,${BACULA_DESTDIR},g" \
94   -e "s,@PACKAGE_ID@,${PACKAGE_ID},g"
95
96 dmg: pkg
97         hdiutil create -srcfolder "${PACKAGE_DIR}" "${PACKAGE_DMG}"
98
99 pkg: ${BACULA_DESTDIR} ${BACULA_PMDOC} ${WORKING_DIR}/resources
100         mkdir -p "${PACKAGE_DIR}"
101
102         ${PM} --doc "${BACULA_PMDOC}" --id "${PACKAGE_ID}" --no-recommend --out "${PACKAGE_BUNDLE}"
103
104         cp ${WORKING_DIR}/resources/ReadMe.html "${PACKAGE_DIR}/ReadMe.html"
105
106         sed ${INFILE_SUBST} \
107                 files/uninstall.command.in > "${PACKAGE_DIR}/uninstall.command";
108         chmod 0775 "${PACKAGE_DIR}/uninstall.command"
109
110 ${BACULA_PMDOC}: ${BACULA_DESTDIR} ${WORKING_DIR}/resources
111         mkdir -p "${BACULA_PMDOC}"
112
113         for f in index.xml 01destdir.xml; do \
114                 sed ${INFILE_SUBST} \
115                         files/installer.pmdoc.in/$$f > "${BACULA_PMDOC}/$$f"; \
116         done
117
118         python installer-gencontents.py ${BACULA_DESTDIR} > ${BACULA_PMDOC}/01destdir-contents.xml
119
120 ${WORKING_DIR}/resources: ${BACULA_DESTDIR}
121         mkdir -p "${WORKING_DIR}/resources"
122
123         for res in ${PACKAGE_RESOURCES}; do \
124                 sed ${INFILE_SUBST} \
125                         resources/$$res.in > "${WORKING_DIR}/resources/$$res"; \
126         done
127
128         for xres in ${PACKAGE_XRESOURCES}; do \
129                 chmod +x "${WORKING_DIR}/resources/$$xres"; \
130         done
131
132         cp "${BACULA_SOURCE}/LICENSE" "${WORKING_DIR}/resources/License.txt"
133
134 ${BACULA_DESTDIR}: ${BACULA_SOURCE}
135         (cd ${BACULA_SOURCE} && ./configure ${CONFIGFLAGS} CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}" CC="${CC}" CPP="${CPP}" CXX="${CXX}" CXXPP="${CXXPP}")
136         ${MAKE} -C ${BACULA_SOURCE}
137         ${MAKE} -C ${BACULA_SOURCE} install DESTDIR="${CURDIR}/${BACULA_DESTDIR}"
138
139         rm -rf "${BACULA_DESTDIR}/tmp"
140
141         for conffile in ${BACULA_DESTDIR}${BACULA_PREFIX}/etc/*.conf; do \
142                 mv $$conffile $$conffile.example; \
143         done
144
145         mkdir -p "${BACULA_DESTDIR}${BACULA_PREFIX}/Library/LaunchDaemons"
146         sed ${INFILE_SUBST} files/com.baculasystems.bacula-fd.plist.in \
147                 > "${BACULA_DESTDIR}${BACULA_PREFIX}/Library/LaunchDaemons/com.baculasystems.bacula-fd.plist"
148
149 ${BACULA_SOURCE}: ${BACULA_TAR}
150         mkdir -p "${WORKING_DIR}"
151         ${TAR} -xzf "${BACULA_TAR}" -C "${WORKING_DIR}"
152
153 ${BACULA_TAR}:
154         mkdir -p "${DL_DIR}"
155         ${CURL} -L -o "${BACULA_TAR}" "${BACULA_DL_URL}"
156
157 .PHONY: distclean
158 distclean: clean
159         rm -rf "${DL_DIR}" "${PRODUCTS_DIR}"
160
161 .PHONY: clean
162 clean:
163         rm -rf "${BUILD_DIR}" "${PACKAGE_DIR}" "${PACKAGE_DMG}"