1# 2# Apple wrapper Makefile for PostgreSQL 3# Copyright (c) 2009-2013 Apple Inc. All Rights Reserved. 4# 5 6# General project info for use with RC/GNUsource.make makefile 7Project = postgresql 8UserType = Administrator 9ToolType = Commands 10Submission = 97 11 12# Include common server build variables 13-include /AppleInternal/ServerTools/ServerBuildVariables.xcconfig 14 15# Variables only used by project 16 17 18ServicesDir = $(NSLIBRARYSUBDIR)/Server 19ServiceDirCustomer = $(ServicesDir)/PostgreSQL 20DocDir = $(SERVER_INSTALL_PATH_PREFIX)$(SHAREDIR)/postgresql 21DBDirCustomer = $(ServiceDirCustomer)/Data 22 23# Environment is passed to BOTH configure AND make, which can cause problems if these 24# variables are intended to help configure, but not override the result. 25Extra_CC_Flags = -Os -g -Wall -Wno-deprecated-declarations 26# This allows extra variables to be passed _just_ to configure. 27Extra_Configure_Environment = CFLAGS="$$RC_CFLAGS $(Extra_CC_Flags)" \ 28 LDFLAGS="$$RC_CFLAGS $(Extra_CC_Flags)" \ 29 LDFLAGS_EX="-mdynamic-no-pic" \ 30 EXTRA_LDFLAGS_PROGRAM="-mdynamic-no-pic" \ 31 LIBS="-L$(SDKROOT)/usr/lib" \ 32 INCLUDES="-I$(SDKROOT)/usr/include/libxml2" 33 34# The configure flags are ordered to match current output of ./configure --help. 35# Extra indentation represents suboptions. 36Extra_Configure_Flags = --prefix=$(SERVER_INSTALL_PATH_PREFIX)$(USRDIR) --sbindir=$(SERVER_INSTALL_PATH_PREFIX)$(LIBEXECDIR) \ 37 --sysconfdir=$(SERVER_INSTALL_PATH_PREFIX)$(ETCDIR) --mandir=$(SERVER_INSTALL_PATH_PREFIX)$(MANDIR) \ 38 --localstatedir=$(DBDirCustomer) \ 39 --htmldir=$(DocDir) \ 40 --enable-thread-safety \ 41 --enable-dtrace \ 42 --with-tcl \ 43 --with-perl \ 44 --with-python \ 45 --with-gssapi \ 46 --with-krb5 \ 47 --with-pam \ 48 --with-ldap \ 49 --with-bonjour \ 50 --with-openssl \ 51 --with-libxml \ 52 --with-libxslt \ 53 --with-system-tzdata=$(SHAREDIR)/zoneinfo 54 55Extra_Make_Flags = 56 57# Additional project info used with AEP 58AEP = YES 59AEP_Version = 9.2.4 60AEP_LicenseFile = $(Sources)/COPYRIGHT 61AEP_Patches = arches.patch pg_config_manual_h.patch \ 62 radar7687126.patch radar7756388.patch radar8304089.patch \ 63 initdb.patch _int_bool.c.patch prep_buildtree.patch 64AEP_LaunchdConfigs = org.postgresql.postgres.plist com.apple.postgres.plist 65AEP_Binaries = $(SERVER_INSTALL_PATH_PREFIX)$(USRBINDIR)/* $(SERVER_INSTALL_PATH_PREFIX)$/$(USRLIBDIR)/lib*.dylib $(SERVER_INSTALL_PATH_PREFIX)$/$(USRLIBDIR)/$(Project)/* $(SERVER_INSTALL_PATH_PREFIX)/$(USRLIBDIR)/postgresql/pgxs/src/test/regress/pg_regress 66 67Configure_Products = config.log src/include/pg_config.h 68GnuAfterInstall = install-docs install-contrib \ 69 install-macosx install-backup install-wrapper archive-strip-binaries \ 70 install-postgres9.0-for-migration install-postgres9.1-for-migration cleanup-dst-root 71 72ContribTools = hstore intarray pg_upgrade pg_upgrade_support 73 74# Local targets that must be defined before including the following 75# files to get the dependency order correct 76.PHONY: $(GnuAfterInstall) 77 78# Include common makefile targets for B&I 79include $(MAKEFILEPATH)/CoreOS/ReleaseControl/GNUSource.make 80include $(MAKEFILEPATH)/CoreOS/ReleaseControl/AEP.make 81 82# Override settings from above includes 83LAUNCHDDIR := $(SERVER_INSTALL_PATH_PREFIX)$(LAUNCHDDIR) 84BuildDirectory = $(OBJROOT)/Build 85Install_Target = install 86# This needs to be overridden because the project properly uses DESTDIR and 87# INSTALL_ROOT (which is included in Environment). 88Install_Flags = DESTDIR="$(DSTROOT)" 89 90 91# Build rules 92 93# The touch is necessary to prevent unnecessary regeneration of all documentation. 94install-docs: 95 @echo "Installing documentation..." 96 $(TOUCH) -r $(Sources)/Makefile $(Sources)/configure 97 $(MAKE) -C $(BuildDirectory) $(Install_Flags) $@ 98 99install-contrib: 100 @echo "Installing specific tools from contrib:" 101 for tool in $(ContribTools); do \ 102 echo "...Installing $${tool}..."; \ 103 $(MAKE) -C $(BuildDirectory)/contrib/$${tool} $(Install_Flags) $(Install_Target); \ 104 done 105 106install-macosx: 107 @echo "Installing man pages..." 108 $(INSTALL_DIRECTORY) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/share/man/man1 109 $(INSTALL) Support/man/pltcl_delmod.1 $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/share/man/man1 110 $(INSTALL) Support/man/pltcl_listmod.1 $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/share/man/man1 111 $(INSTALL) Support/man/pltcl_loadmod.1 $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/share/man/man1 112 @echo "Installing template config files..." 113 $(INSTALL_DIRECTORY) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/Library/Preferences 114 $(INSTALL) -m 644 Support/org.postgresql.postgres.plist.dist $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/Library/Preferences/org.postgresql.postgres.plist 115 $(INSTALL) -m 644 Support/com.apple.postgres.plist.dist $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/Library/Preferences/com.apple.postgres.plist 116 @echo "Installing webapp plist files..." 117 $(INSTALL_DIRECTORY) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/private/etc/apache2/webapps 118 $(INSTALL) -m 644 Support/webapp_org.postgresql.postgres.plist.dist $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/private/etc/apache2/webapps/org.postgresql.postgres.plist 119 $(CP) -p $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/private/etc/apache2/webapps/org.postgresql.postgres.plist $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/private/etc/apache2/webapps/org.postgresql.postgres.plist.default 120 @echo "Installing initialization script..." 121 $(INSTALL_DIRECTORY) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/libexec 122 $(INSTALL) -m 755 Support/copy_postgresql_config_files.sh $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/libexec 123 @echo "Installing Extras scripts..." 124 $(INSTALL_DIRECTORY) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/System/Library/ServerSetup/CommonExtras/PostgreSQLExtras 125 $(INSTALL_DIRECTORY) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/System/Library/ServerSetup/RestoreExtras 126 $(INSTALL_DIRECTORY) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/System/Library/ServerSetup/MigrationExtras 127 $(INSTALL_DIRECTORY) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/System/Library/ServerSetup/PromotionExtras 128 $(INSTALL_SCRIPT) Support/05_PostgresRestoreExtra.pl $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/System/Library/ServerSetup/RestoreExtras 129 $(INSTALL_SCRIPT) Support/05_postgresmigrator.rb $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/System/Library/ServerSetup/MigrationExtras 130 $(INSTALL_SCRIPT) Support/58_postgres_setup.rb $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/System/Library/ServerSetup/PromotionExtras 131 @echo "Done." 132 133install-backup: install-macosx 134 @echo "Installing backup / Time Machine support..." 135 $(INSTALL_DIRECTORY) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)$(ETCDIR)/server_backup 136 $(INSTALL_FILE) Support/backup_restore/46-postgresql.plist $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)$(ETCDIR)/server_backup 137 $(INSTALL_SCRIPT) Support/backup_restore/xpg_archive_command $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/libexec 138 $(INSTALL_SCRIPT) Support/backup_restore/xpostgres $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/bin 139 $(INSTALL_SCRIPT) Support/backup_restore/xpg_ctl $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/bin 140 @echo "Done." 141 142install-wrapper: 143 @echo "Installing wrapper" 144 $(MV) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/bin/postgres $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/bin/postgres_real 145 $(SED) 's|@PATH_TEMPLATE@|$(SERVER_INSTALL_PATH_PREFIX)/usr/bin/postgres_real|' Support/postgres > Support/postgres_patched 146 $(INSTALL) -m 755 Support/postgres_patched $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/bin/postgres 147 @echo "Done." 148 149install-postgres9.0-for-migration: 150 @echo "Installing older PostgreSQL binaries to be used for migration" 151 $(MKDIR) $(SYMROOT)/Migration_9.0_to_9.2 152 $(MAKE) -C Support/Migration_9.0_to_9.2 install \ 153 SRCROOT=$(SRCROOT)/Support/Migration_9.0_to_9.2 \ 154 OBJROOT=$(OBJROOT)/Migration_9.0_to_9.2 \ 155 SYMROOT=$(SYMROOT)/Migration_9.0_to_9.2 \ 156 DSTROOT=$(DSTROOT) \ 157 BuildDirectory=$(OBJROOT)/Migration_9.0_to_9.2/Build \ 158 Sources=$(OBJROOT)/Migration_9.0_to_9.2/postgres \ 159 CoreOSMakefiles=$(CoreOSMakefiles) 160 @echo "Done installing PostgreSQL 9.0" 161 162install-postgres9.1-for-migration: 163 @echo "Installing older PostgreSQL binaries to be used for migration" 164 $(MKDIR) $(SYMROOT)/Migration_9.1_to_9.2 165 $(MAKE) -C Support/Migration_9.1_to_9.2 install \ 166 SRCROOT=$(SRCROOT)/Support/Migration_9.1_to_9.2 \ 167 OBJROOT=$(OBJROOT)/Migration_9.1_to_9.2 \ 168 SYMROOT=$(SYMROOT)/Migration_9.1_to_9.2 \ 169 DSTROOT=$(DSTROOT) \ 170 BuildDirectory=$(OBJROOT)/Migration_9.1_to_9.2/Build \ 171 Sources=$(OBJROOT)/Migration_9.1_to_9.2/postgres \ 172 CoreOSMakefiles=$(CoreOSMakefiles) 173 @echo "Done installing PostgreSQL 9.1" 174 175cleanup-dst-root: 176 @echo "Removing unwanted files from DSTROOT" 177 $(RM) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/lib/*.a 178 $(RM) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/lib/postgresql9.0/*.a 179 $(RM) $(DSTROOT)$(SERVER_INSTALL_PATH_PREFIX)/usr/lib/postgresql9.1/*.a 180 if [ -z $(SERVER_INSTALL_PATH_PREFIX) ]; then \ 181 echo "We only want libraries installed, so remove everything else."; \ 182 $(SILENT) $(RM) -Rf $(DSTROOT)/System; \ 183 $(SILENT) $(RM) -Rf $(DSTROOT)/private; \ 184 $(SILENT) $(RM) -Rf $(DSTROOT)/usr/bin; \ 185 $(SILENT) $(RM) -Rf $(DSTROOT)/usr/libexec; \ 186 $(SILENT) $(RM) -Rf $(DSTROOT)/usr/include; \ 187 $(SILENT) $(RM) -Rf $(DSTROOT)/usr/share; \ 188 $(SILENT) $(RM) -Rf $(DSTROOT)/usr/lib/postgresql9.0; \ 189 $(SILENT) $(RM) -Rf $(DSTROOT)/usr/lib/postgresql9.1; \ 190 $(SILENT) $(RM) -Rf $(DSTROOT)/usr/lib/postgresql/pgxs; \ 191 fi 192 @echo "Done." 193