blob: 2c1d952e92db491d83ecd358d9fc23efce89a68d [file] [log] [blame]
# @@@ START COPYRIGHT @@@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# @@@ END COPYRIGHT @@@
include ../macros.gmk
include ./macros.gmk
# Default build flavor is debug
SQ_BUILD_TYPE ?= debug
ifeq ($(SQ_BUILD_TYPE),release)
MTYPE_BTYPE=$(SQ_MTYPE)bit/release
else
MTYPE_BTYPE=$(SQ_MTYPE)bit/debug
endif
ifeq ($(SQ_MTYPE),64)
SQENV_MTYPE=sqenv.sh
else
SQENV_MTYPE=sq32env.sh
endif
STUBLIBDIR=stublibs/lib/linux/$(MTYPE_BTYPE)
SQL_W=$(TRAF_HOME)/../sql
DP2=se
MISC = win misc_sec
SQ_COMPONENTS := make_sqevlog seabed stfs $(MISC) tm $(SEAMONSTER_TARGET) make_sql make_monitor tools hbase_utilities
.PHONY: $(SQ_COMPONENTS)
buildinfo:
@echo "Building $(TRAFODION_VER_PROD) Version $(TRAFODION_VER) $(SQ_BUILD_TYPE)"
@echo ""
all: genverhdr $(SQ_COMPONENTS)
win: make_sqevlog seabed
cd src/win; $(MAKE) 2>&1 | sed -e "s/$$/ ##(SQF)/" ; exit $${PIPESTATUS[0]}
seabed: make_sqevlog
cd src/seabed; $(MAKE) 2>&1 | sed -e "s/$$/ ##(SQF)/" ; exit $${PIPESTATUS[0]}
tm: seabed make_sqevlog
cd src/tm; $(MAKE) 2>&1 | sed -e "s/$$/ ##(SQF)/" ; exit $${PIPESTATUS[0]}
seamonster: seabed
cd ../seamonster/src; $(MAKE) 2>&1 | sed -e "s/$$/ ##(SEAMONSTER)/" ; exit $${PIPESTATUS[0]}
smstub:
cd ../smstub/src; $(MAKE) 2>&1 | sed -e "s/$$/ ##(SMSTUB)/" ; exit $${PIPESTATUS[0]}
make_sql: $(SEAMONSTER_TARGET) win hbase_utilities
cd sql; $(MAKE) WROOT=$(SQL_W) 2>&1 | sed -e "s/$$/ ##(SQL)/" ; exit $${PIPESTATUS[0]}
cd $(TRAF_HOME)/sql/scripts && ./makemsg.ksh 2>&1 | sed -e "s/$$/ ##(SQL)/" ; exit $${PIPESTATUS[0]}
make_monitor: stfs make_sqevlog seabed
cd monitor/linux; $(MAKE) 2>&1 | sed -e "s/$$/ ##(SQF)/" ; exit $${PIPESTATUS[0]}
stfs: make_sqevlog
-cd src/stfs; $(MAKE) -f Makefile.stub 2>&1 | sed -e "s/$$/ ##(SQF)/" ; exit $${PIPESTATUS[0]}
monitor_ib:
-cd monitor/linux && mv $(OUTDIR) $(OUTDIR).tcp && mkdir -p $(OUTDIR) 2>&1 | sed -e "s/$$/ ##(SQF)/" ; exit $${PIPESTATUS[0]}
cd monitor/linux; $(MAKE) 2>&1 | sed -e "s/$$/ ##(SQF)/" ; exit $${PIPESTATUS[0]}
make_sqevlog:
cd sqevlog; $(MAKE) 2>&1 | sed -e "s/$$/ ##(SQF)/" ; exit $${PIPESTATUS[0]}
hbase_utilities: tm
cd hbase_utilities; $(MAKE) 2>&1 | sed -e "s/$$/ ##(HBASE_UTIL)/" ; exit $${PIPESTATUS[0]}
.PHONY: conn
conn:
cd ../conn/odbc/src/odbc; $(MAKE) clean; $(MAKE) all 2>&1 | sed -e "s/$$/ ##(NDCS)/" ; exit $${PIPESTATUS[0]}
.PHONY: ndcs
ndcs:
cd ../conn/odbc/src/odbc; $(MAKE) cleanndcs; $(MAKE) ndcs 2>&1 | sed -e "s/$$/ ##(NDCS)/" ; exit $${PIPESTATUS[0]}
.PHONY: wms
wms:
cd ../conn/odbc/src/odbc; $(MAKE) cleanwms; $(MAKE) wms 2>&1 | sed -e "s/$$/ ##(WMS)/" ; exit $${PIPESTATUS[0]}
clean: setupdir_clean
-cd monitor/linux; $(MAKE) clean
-cd src/seabed; $(MAKE) clean
-cd src/stfs; $(MAKE) -f Makefile.stub clean
-cd src/win; $(MAKE) clean
-cd src/tm; $(MAKE) clean
-cd sql; $(MAKE) WROOT=$(SQL_W) clean
-cd sqevlog; $(MAKE) clean
-cd hbase_utilities; $(MAKE) clean
# from genverhdr.ksh
rm -f export/include/SCMBuildStr.h export/include/SCMBuildStr.java export/include/buildId
# from makemsg.ksh
rm -f sql/scripts/SqlciErrors.[gm] export/bin*/mxcierrors.cat
# sql uses clean
cleanall: setupdir_clean
-cd monitor/linux; $(MAKE) cleanall
-cd src/seabed; $(MAKE) cleanall
-cd src/stfs; $(MAKE) -f Makefile.stub cleanall
-cd src/win; $(MAKE) cleanall
-cd src/tm; $(MAKE) cleanall
-cd sql; $(MAKE) WROOT=$(SQL_W) clean
-cd sqevlog; $(MAKE) cleanall
-cd hbase_utilities; $(MAKE) clean
# from genverhdr.ksh
rm -f export/include/SCMBuildStr.h export/include/SCMBuildStr.java export/include/buildId
# from makemsg.ksh
rm -f sql/scripts/SqlciErrors.[gm] export/bin*/mxcierrors.cat
cleaner:
-cd monitor/linux; $(MAKE) cleaner
-cd src/seabed; $(MAKE) cleaner
-cd src/stfs; $(MAKE) -f Makefile.stub cleaner
-cd src/win; $(MAKE) cleaner
-cd src/tm; $(MAKE) cleaner
-cd sql; $(MAKE) WROOT=$(SQL_W) cleaner
-cd sqevlog; $(MAKE) cleaner
cleanobjs:
@TMP=/tmp/mc$$$$; \
trap "rm -f $$TMP; exit 0" 1 2 13 15; \
echo "echo /bin/rm -f" '"$$*"' > $$TMP; \
echo "/bin/rm -f" '"$$*"' >> $$TMP; \
chmod +x $$TMP; \
find . \( -name '*.o' -o -name '*.so' \) -exec $$TMP '{}' \;
$(RM) $$TMP
EXPORTBIN_DIR=export/bin$(SQ_MBTYPE)
EXPORTLIB_DIR=export/lib$(SQ_MBTYPE)
EXPORTLIBX_DIR=export/lib
EXPORTINCSQL_DIR=export/include/sql
EXPORTINCEVL_DIR=export/include
# SQL libs
EXPORTSQLLIBS= libarkcmplib.so libarkcmp.so libarkesp.so libarkfsindp2.so libcatman.so \
libcli.so libcomexe.so libcommon.so libeh.so libexecutor.so libexeindp2.so \
libfepipe.so libgenerator.so liblangman.so liblmcomp.so liboptimizer.so \
libparser.so libsmdio.so libsort.so libsqlcat.so libsqlci.so libsqlcomp.so \
libsqlc.so libsqlmsg.so libtdm_arkfsddl.so libtdm_arkfsdml.so \
libtdm_arkfsinopen.so libtdm_sqlcli_globals.so libtdm_sqlcli.so \
libtdm_sqlerrormsg.so libtdm_sqlexport.so libtdm_sqlexp.so libtdm_sqlmxevents.so \
libtdm_sqlshare.so libustat.so libSqlCompilerDebugger.so libudr_predef.so
# SQL Utility Libraries
EXPORTUTILLIBS= libds.a libdmol.a libddol.a libuol.a libqol.a libdup.a libPaUtiParser.a \
libuofs.a libpurgedata.a libtse_interface.so
# SQL system executables
EXPORTSQLEXE= tdm_sqlc tdm_arkcmp tdm_arkesp sqlci tdm_udrserv mxlobsrvr
# SQL Utilities executables
EXPORTUTILS= mxtool sup mxexportddl mximportddl
setupdir:
mkdir -p $(EXPORTBIN_DIR)
mkdir -p $(EXPORTLIB_DIR)
mkdir -p $(EXPORTINCSQL_DIR)
mkdir -p $(EXPORTINCEVL_DIR)
@# side-effect directory creation in these targets
-cd monitor/linux; $(MAKE) setup
-cd src/win; $(MAKE) setup
-cd src/seabed; $(MAKE) setup
-cd src/tm; $(MAKE) setup
-cd sqevlog; $(MAKE) setup
@# builds/copies 3rd party dependencies as necessary
cd sql; $(MAKE) WROOT=$(SQL_W) setup
@# commands to export
-ln -sf ../../mondump $(EXPORTBIN_DIR)
-ln -sf ../../sqid $(EXPORTBIN_DIR)
-ln -sf ../../sqinfo $(EXPORTBIN_DIR)
-ln -sf ../../sqvers $(EXPORTBIN_DIR)
@# SQL Messages .txt file
-ln -sf $(SQL_W)/bin/SqlciErrors.txt $(EXPORTINCSQL_DIR)
@# copy some header files
-ln -sf $(SQL_W)/cli/sqlcli.h $(EXPORTINCSQL_DIR)
-ln -sf $(SQL_W)/sqludr/sqludr.h $(EXPORTINCSQL_DIR)
@#
mkdir -p export/include/nsk
-ln -sf $(TRAF_HOME)/inc/cextdecs/cextdecs.h export/include/nsk
@# USTAT
-mkdir -p export/lib/mx_ustat
-ln -sf $(SQL_W)/ustat/USAS.sh export/lib/mx_ustat
-ln -sf $(SQL_W)/ustat/FillAutoTbl.sh export/lib/mx_ustat
-ln -sf $(SQL_W)/ustat/RunLogUstats.sh export/lib/mx_ustat
-ln -sf $(SQL_W)/ustat/StopAutoStats.sh export/lib/mx_ustat
-ln -sf $(SQL_W)/ustat/stats_profile export/lib/mx_ustat
# "setupdir" target clean up
setupdir_clean:
rm -rf $(EXPORTBIN_DIR)/sqinfo
rm -rf $(EXPORTLIB_DIR)/librwtlh.so
rm -rf $(EXPORTLIB_DIR)/libdummy.so $(EXPORTLIB_DIR)/libtdm_measenty.so \
$(EXPORTLIB_DIR)/libtdm_security.so $(EXPORTLIB_DIR)/libtdm_tfds.so \
$(EXPORTLIB_DIR)/libtdm_tmflib.so $(EXPORTLIB_DIR)/libtdm_tmfuser.so \
$(EXPORTLIB_DIR)/libhdfs*.so $(EXPORTLIB_DIR)/libhadoop*.so \
$(EXPORTINCEVL_DIR)/hdfs.h
@for f in $(EXPORTSQLLIBS); do \
echo rm -f $(EXPORTLIB_DIR)/$$f ; \
rm -f $(EXPORTLIB_DIR)/$$f ; done
@for f in $(EXPORTUTILLIBS); do \
echo rm -f $(EXPORTLIB_DIR)/$$f ; \
rm -f $(EXPORTLIB_DIR)/$$f ; done
@for f in $(EXPORTSQLEXE); do \
echo rm -f $(EXPORTBIN_DIR)/$$f ; \
rm -f $(EXPORTBIN_DIR)/$$f ; done
@for f in $(EXPORTUTILS); do \
echo rm -f $(EXPORTBIN_DIR)/$$f ; \
rm -f $(EXPORTBIN_DIR)/$$f ; done
rm -f $(EXPORTLIBX_DIR)/mxlangman.jar
-rm -rf $(EXPORTINCSQL_DIR) export/include/nsk export/lib/mx_ustat
######
#
# Automated Build and Release Targets
#
######
# NOTE: This is another target that could be a recursive
# call into each subdir. That would allow each
# subdir to have it's own header / version info
.PHONY: genverhdr
PV_BRANCH ?= $(shell build-scripts/build.branch)
PV_BUILDID ?= $(shell whoami)
PV_DATE ?= $(shell date +%d%b%y)
PV_FUNBRANCH ?= $(shell build-scripts/build.branch -f)
SQVFILE = sqenvcom.sh
PV_MAJOR ?= $(shell grep TRAFODION_VER_MAJOR= $(SQVFILE) | cut -f2 -d=)
PV_MINOR ?= $(shell grep TRAFODION_VER_MINOR= $(SQVFILE) | cut -f2 -d=)
PV_UPDATE ?= $(shell grep TRAFODION_VER_UPDATE= $(SQVFILE) | cut -f2 -d=)
genverhdr: buildinfo
cd build-scripts && ./genverhdr.ksh -major "${PV_MAJOR}" \
-minor "${PV_MINOR}" \
-update "${PV_UPDATE}" \
-build "${PV_BUILDID}" \
-flavor "${SQ_BUILD_TYPE}" \
-funbranch "${PV_FUNBRANCH}" \
-branch "${PV_BRANCH}" \
-date "${PV_DATE}"
PKG_PROD = apache-trafodion
PKG_PHX = phoenix
PKG_DCS = dcs
OS_TYPE = RH
OS_MAJOR ?= $(shell lsb_release -rs | cut -f1 -d.)
P_TYPE = $(shell uname -p)
ifeq ($(SQ_BUILD_TYPE),release)
PKG_TYPE="server-$(TRAFODION_VER)-${OS_TYPE}${OS_MAJOR}-${P_TYPE}"
else
PKG_TYPE="server-$(TRAFODION_VER)-${OS_TYPE}${OS_MAJOR}-${P_TYPE}-debug"
endif
PKG_BIN ?= "${PKG_PROD}.bin"
PKG_TAR ?= "../../${DISTRIBUTION_DIR}/${PKG_PROD}_$(PKG_TYPE).tar.gz"
PKG_TAR_UN = "${PKG_PROD}_${SQ_BUILD_TYPE}.tar"
SRC_PKG_BIN ?= "../../${DISTRIBUTION_DIR}/${PKG_PROD}-src.bin"
SRC_PKG_TAR ?= "../../${DISTRIBUTION_DIR}/${PKG_PROD}-src.tgz"
PKG_PHX_TAR ?= "../../${DISTRIBUTION_DIR}/${PKG_PHX}-tests.tgz"
PKG_DCS_TEST_TAR ?= "../../${DISTRIBUTION_DIR}/${PKG_DCS}-tests.tgz"
PKG_BIN_OBJS ?= export/bin$(SQ_MBTYPE) export/include export/lib export/lib$(SQ_MBTYPE) export/share gdb sql/scripts sqenvcom.sh opt tools conf hbase_utilities/backup_and_restore
PKG_BIN_OBJS += sysinstall
PKG_BIN_OBJS += trafci
PKG_BIN_OBJS += samples
PKG_BIN_OBJS += export/limited-support-tools
PKG_BIN_OBJS += LICENSE NOTICE
PKG_BIN_OBJS += rest-${TRAFODION_VER} dcs-${TRAFODION_VER}
PKG_BIN_DIRS ?= sql export
PKG_BIN_DIRS += trafci
PKG_BIN_DIRS += samples
# Package Regression variables (parser file is for compGeneral/TESTTOK2)
PKG_REGRESS_OBJS ?= $(SQL_W)/regress inc/seaquest/sqtypes.h inc/fs/feerrors.h $(SQL_W)/cli/sqlcli.h $(SQL_W)/cli/SQLCLIdev.h $(SQL_W)/parser/sqlparser.y
REGRESS_EXCLUDE_FILES = "--exclude=$(SQL_W)/regress/seabase"
REGRESS_EXCLUDE_FILES =
PKG_REGRESS_TAR ?= "../../${DISTRIBUTION_DIR}/${PKG_PROD}-regress.tgz"
# Package SeaMonster kernel module
SEAMONSTER_TAR ?= "seamonster_${SQ_BUILD_TYPE}-src.tar.gz"
# Targets to tar/gzip the tree
package: pkglist-files pkglist-symlinks tmp/sqenv.sh
mkdir -p ../../${DISTRIBUTION_DIR}
chmod o-rwx $(PKG_BIN_DIRS)
chmod -R o-rwx $(PKG_BIN_OBJS)
tar --mode o-rwx --no-recursion -chf $(PKG_TAR_UN) -X build-scripts/package.exclude -X build-scripts/package.exclude.$(SQ_MBTYPE) -T pkglist-files
tar --mode o-rwx -rf $(PKG_TAR_UN) -X build-scripts/package.exclude -X build-scripts/package.exclude.$(SQ_MBTYPE) -T pkglist-symlinks
cd tmp; tar --mode o-rwx -rf ../$(PKG_TAR_UN) sqenv.sh
gzip -c $(PKG_TAR_UN) > $(PKG_TAR)
rm -f $(PKG_TAR_UN) pkglist-files pkglist-symlinks tmp/sqenv.sh
LICENSE: ../../licenses/LICENSE-server
cp -f $? $@
../../licenses/LICENSE-server:
cd $(@D) && $(MAKE) $(@F)
NOTICE: ../../licenses/NOTICE-server
cp -f $? $@
../../licenses/NOTICE-server:
cd $(@D) && $(MAKE) $(@F)
rest-${TRAFODION_VER}:
ln -s ../rest/target/$@/$@ $@
dcs-${TRAFODION_VER}:
ln -s ../../dcs/target/$@/$@ $@
tmp/sqenv.sh:
@if [ ! -d tmp ]; then mkdir tmp; fi
echo "export SQ_BUILD_TYPE=$(SQ_BUILD_TYPE)" > tmp/sqenv.sh
echo "" >> tmp/sqenv.sh
echo "# $(SQENV_MTYPE)" >> tmp/sqenv.sh
cat $(SQENV_MTYPE) >> tmp/sqenv.sh
# regular directories and files, following symlinks, minus simple links
pkglist-files: pkglist-symlinks
find -L $(PKG_BIN_OBJS) -type d -o -type f | grep -v -xf pkglist-symlinks > $@
# simple symlinks that point to filename (does not start with . or /)
pkglist-symlinks: LICENSE NOTICE rest-${TRAFODION_VER} dcs-${TRAFODION_VER}
find $(PKG_BIN_OBJS) -lname '[^./]*' > $@
# Targets to tar/gzip the self installer
packagebin:
cat $(TRAF_HOME)/sql/scripts/sqinstall > $(PKG_BIN)
echo "__ARCHIVE_BELOW__" >> $(PKG_BIN)
tar chzf - -X build-scripts/package.exclude $(PKG_BIN_OBJS) >> $(PKG_BIN)
chmod +x $(PKG_BIN)
# Targets to create self-installer with sqinstaller
packageinstaller:
cat $(TRAF_HOME)/sql/scripts/sqinstaller > $(PKG_BIN)
echo "__ARCHIVE_BELOW__" >> $(PKG_BIN)
tar chzf - -X build-scripts/package.exclude $(PKG_BIN_OBJS) >> $(PKG_BIN)
chmod +x $(PKG_BIN)
srcpackage:
-rm etc/ms.env
tar chzf ${SRC_PKG_TAR} -X build-scripts/package.exclude -X build-scripts/package.exclude.$(SQ_MBTYPE) .
# Targets to tar/gzip the regression tree
package-regress:
tar chzf $(PKG_REGRESS_TAR) -X build-scripts/package.exclude $(REGRESS_EXCLUDE_FILES) $(PKG_REGRESS_OBJS)
# Targets to tar/gzip the phoenix tests
package-phx:
tar chzf $(PKG_PHX_TAR) ../../tests/phx
# Targets to tar/gzip the dcs tests
package-dcs:
tar chzf $(PKG_DCS_TEST_TAR) ../../dcs/src/test
# Targets to tar/gzip the self installer with sources
srcpackagebin:
-rm etc/ms.env
cat $(TRAF_HOME)/sql/scripts/sqinstall > $(SRC_PKG_BIN)
echo "__ARCHIVE_BELOW__" >> $(SRC_PKG_BIN)
tar chzf - -X build-scripts/package.exclude -X build-scripts/package.exclude.$(SQ_MBTYPE) . >> $(SRC_PKG_BIN)
chmod +x $(SRC_PKG_BIN)
# Convenience target to clean / build / package
fullpackage: clean all package srcpackage
# Convenience target to clean / build / binary package
fullpackagebin: clean all packagebin srcpackagebin
# doxygen html xref
#
doxygen:
doxygen sqf_doxygen.cfg