1
0
Fork 0
arangodb/GNUmakefile

414 lines
12 KiB
Makefile

# -*- mode: Makefile; -*-
## -----------------------------------------------------------------------------
## --SECTION-- COMMON VARIABLES
## -----------------------------------------------------------------------------
-include Makefile
VERSION_MAJOR := $(wordlist 1,1,$(subst ., ,$(VERSION)))
VERSION_MINOR := $(wordlist 2,2,$(subst ., ,$(VERSION)))
VERSION_PATCH := $(wordlist 3,3,$(subst ., ,$(VERSION)))
VERSION_PATCH := $(wordlist 1,1,$(subst -, ,$(VERSION_PATCH)))
## -----------------------------------------------------------------------------
## --SECTION-- SPECIAL TARGETS
## -----------------------------------------------------------------------------
################################################################################
### @brief setup
################################################################################
.PHONY: setup
setup:
@echo ACLOCAL
@aclocal -I m4
@echo AUTOMAKE
@automake --add-missing --force-missing --copy
@echo AUTOCONF
@autoconf -I m4
@echo auto system configured, proceed with configure
################################################################################
### @brief add maintainer files
################################################################################
MAINTAINER = \
README \
arangod/Aql/tokens.cpp \
arangod/Aql/grammar.cpp \
arangod/Aql/grammar.h \
lib/JsonParser/json-parser.cpp \
lib/V8/v8-json.cpp \
lib/Basics/voc-errors.h \
lib/Basics/voc-errors.cpp \
js/common/bootstrap/errors.js
AUTOMAGIC = \
Makefile.in \
aclocal.m4 \
configure \
config/compile \
config/config.guess \
config/config.sub \
config/depcomp \
config/install-sh \
config/missing
.PHONY: add-maintainer add-automagic
add-maintainer:
@echo adding generated files to GIT
git add -f $(MAINTAINER)
remove-maintainer:
@echo removing generated files from GIT
git rm -f $(MAINTAINER)
add-automagic:
@echo adding automagic files to GIT
git add -f $(AUTOMAGIC)
remove-automagic:
@echo removing automagic files from GIT
git rm -f $(AUTOMAGIC)
################################################################################
### @brief make love
################################################################################
love:
@echo ArangoDB loves you
## -----------------------------------------------------------------------------
## --SECTION-- CMAKE & CPACK
## -----------------------------------------------------------------------------
################################################################################
### @brief MacOSX bundle
################################################################################
.PHONY: pack-dmg pack-dmg-cmake
DMG_NAME := ArangoDB-CLI.app
pack-dmg:
rm -rf Build && mkdir Build
./configure \
--prefix=/opt/arangodb \
CPPFLAGS="-I`brew --prefix`/opt/openssl/include" \
LDFLAGS="-L`brew --prefix`/opt/openssl/lib"
${MAKE} pack-dmg-cmake
pack-dmg-cmake:
cd Build && cmake \
-D "ARANGODB_VERSION=${VERSION}" \
-D "BUILD_PACKAGE=dmg-cli" \
-D "CMAKE_INSTALL_PREFIX=${prefix}" \
-D "CPACK_PACKAGE_VERSION_MAJOR=${VERSION_MAJOR}" \
-D "CPACK_PACKAGE_VERSION_MINOR=${VERSION_MINOR}" \
-D "CPACK_PACKAGE_VERSION_PATCH=${VERSION_PATCH}" \
-D "LIBEV_VERSION=${LIBEV_VERSION}" \
-D "OPENSSL_INCLUDE=`brew --prefix`/opt/openssl/include" \
-D "OPENSSL_LIB_PATH=`brew --prefix`/opt/openssl/lib" \
-D "OPENSSL_LIBS=`brew --prefix`/opt/openssl/lib/libssl.a;`brew --prefix`/opt/openssl/lib/libcrypto.a" \
-D "V8_VERSION=${V8_VERSION}" \
-D "ZLIB_VERSION=${ZLIB_VERSION}" \
..
${MAKE} .libev-build-64
${MAKE} .zlib-build-64
${MAKE} .v8-build-64
${MAKE} ${BUILT_SOURCES}
test -d bin || mkdir bin
make bin/etcd-arango
rm -f ./.file-list-js
cd Build && ${MAKE}
./Installation/file-copy-js.sh . Build
cd Build && cpack \
-G Bundle \
-D "CPACK_INSTALL_PREFIX=${DMG_NAME}/Contents/MacOS/opt/arangodb"
################################################################################
### @brief MacOSXcode
################################################################################
.PHONY: pack-macosxcode pack-macosxcode-cmake
PACK_DESTDIR ?= .
pack-macosxcode:
rm -rf Build && mkdir Build
./configure \
--prefix=/opt/arangodb \
CPPFLAGS="-I`brew --prefix`/opt/openssl/include" \
LDFLAGS="-L`brew --prefix`/opt/openssl/lib"
${MAKE} -f GNUMakefile pack-macosxcode-cmake MOREOPTS='$(MOREOPTS)'
pack-macosxcode-cmake:
rm -f ./.file-list-js
cd Build && cmake \
-D "ARANGODB_VERSION=${VERSION}" \
-D "BUILD_PACKAGE=dmg-cli" \
-D "CMAKE_INSTALL_PREFIX=${prefix}" \
-D "CPACK_PACKAGE_VERSION_MAJOR=${VERSION_MAJOR}" \
-D "CPACK_PACKAGE_VERSION_MINOR=${VERSION_MINOR}" \
-D "CPACK_PACKAGE_VERSION_PATCH=${VERSION_PATCH}" \
-D "LIBEV_VERSION=${LIBEV_VERSION}" \
-D "OPENSSL_INCLUDE=`brew --prefix`/opt/openssl/include" \
-D "OPENSSL_LIB_PATH=`brew --prefix`/opt/openssl/lib" \
-D "OPENSSL_LIBS=`brew --prefix`/opt/openssl/lib/libssl.a;`brew --prefix`/opt/openssl/lib/libcrypto.a" \
-D "V8_VERSION=${V8_VERSION}" \
-D "ZLIB_VERSION=${ZLIB_VERSION}" \
-G Xcode \
$(MOREOPTS) \
..
./Installation/file-copy-js.sh . Build
################################################################################
### @brief MacOSX
################################################################################
.PHONY: pack-macosx pack-macosx-cmake
PACK_DESTDIR ?= .
pack-macosx:
rm -rf Build && mkdir Build
./configure \
--prefix=/opt/arangodb \
CPPFLAGS="-I`brew --prefix`/opt/openssl/include" \
LDFLAGS="-L`brew --prefix`/opt/openssl/lib"
${MAKE} pack-macosx-cmake MOREOPTS='$(MOREOPTS)'
pack-macosx-cmake:
cd Build && cmake \
-D "ARANGODB_VERSION=${VERSION}" \
-D "BUILD_PACKAGE=dmg-cli" \
-D "CMAKE_INSTALL_PREFIX=${prefix}" \
-D "CPACK_PACKAGE_VERSION_MAJOR=${VERSION_MAJOR}" \
-D "CPACK_PACKAGE_VERSION_MINOR=${VERSION_MINOR}" \
-D "CPACK_PACKAGE_VERSION_PATCH=${VERSION_PATCH}" \
-D "LIBEV_VERSION=${LIBEV_VERSION}" \
-D "OPENSSL_INCLUDE=`brew --prefix`/opt/openssl/include" \
-D "OPENSSL_LIB_PATH=`brew --prefix`/opt/openssl/lib" \
-D "OPENSSL_LIBS=`brew --prefix`/opt/openssl/lib/libssl.a;`brew --prefix`/opt/openssl/lib/libcrypto.a" \
-D "V8_VERSION=${V8_VERSION}" \
-D "ZLIB_VERSION=${ZLIB_VERSION}" \
$(MOREOPTS) \
..
${MAKE} .libev-build-64
${MAKE} .zlib-build-64
${MAKE} .v8-build-64
${MAKE} ${BUILT_SOURCES}
test -d bin || mkdir bin
make bin/etcd-arango
rm -f ./.file-list-js
cd Build && ${MAKE}
./Installation/file-copy-js.sh . Build
cd Build && ${MAKE} install DESTDIR=${PACK_DESTDIR}
################################################################################
### @brief debian arm package
################################################################################
.PHONY: pack-arm pack-arm-cmake
pack-arm:
rm -rf Build && mkdir Build
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var
touch .libev-build-32
touch .v8-build-32
touch .zlib-build-32
${MAKE} pack-arm-cmake
pack-arm-cmake:
cd Build && cmake \
-D "ARANGODB_VERSION=${VERSION}" \
-D "BUILD_PACKAGE=raspbian" \
-D "CMAKE_CXX_FLAGS_RELEASE:STRING=-O2 -DNDEBUG" \
-D "CMAKE_C_FLAGS_RELEASE:STRING=-O2 -DNDEBUG" \
-D "CMAKE_INSTALL_PREFIX=${prefix}" \
-D "CPACK_PACKAGE_VERSION_MAJOR=${VERSION_MAJOR}" \
-D "CPACK_PACKAGE_VERSION_MINOR=${VERSION_MINOR}" \
-D "CPACK_PACKAGE_VERSION_PATCH=${VERSION_PATCH}" \
-D "ETCDIR=${sysconfdir}" \
-D "LIBEV_VERSION=${LIBEV_VERSION}" \
-D "V8_VERSION=${V8_VERSION}" \
-D "VARDIR=${localstatedir}" \
-D "ZLIB_VERSION=${ZLIB_VERSION}" \
$(MOREOPTS) \
..
${MAKE} ${BUILT_SOURCES}
rm -f ./.file-list-js
cd Build && ${MAKE}
./Installation/file-copy-js.sh . Build
cd Build && cpack -G DEB
pack-deb-cmake:
mkdir Build
cd Build && cmake \
-D "ARANGODB_VERSION=${VERSION}" \
-D "CMAKE_CXX_FLAGS_RELEASE:STRING=-O2 -DNDEBUG" \
-D "CMAKE_C_FLAGS_RELEASE:STRING=-O2 -DNDEBUG" \
-D "CMAKE_INSTALL_PREFIX=${prefix}" \
-D "CPACK_PACKAGE_VERSION_MAJOR=${VERSION_MAJOR}" \
-D "CPACK_PACKAGE_VERSION_MINOR=${VERSION_MINOR}" \
-D "CPACK_PACKAGE_VERSION_PATCH=${VERSION_PATCH}" \
-D "ETCDIR=${sysconfdir}" \
-D "LIBEV_VERSION=${LIBEV_VERSION}" \
-D "V8_VERSION=${V8_VERSION}" \
-D "VARDIR=${localstatedir}" \
-D "ZLIB_VERSION=${ZLIB_VERSION}" \
$(MOREOPTS) \
..
${MAKE} .libev-build-64
${MAKE} .zlib-build-64
${MAKE} .v8-build-64
${MAKE} ${BUILT_SOURCES}
${MAKE} ${BUILT_SOURCES}
rm -f ./.file-list-js
cd Build && ${MAKE}
./Installation/file-copy-js.sh . Build
cd Build && cpack -G DEB
################################################################################
### @brief Windows 64-bit bundle
################################################################################
.PHONY: pack-win32 pack-winXX winXX-cmake win64-relative win64-relative-debug
pack-win32:
$(MAKE) pack-winXX BITS=32 TARGET="Visual Studio 12"
pack-win64:
$(MAKE) pack-winXX BITS=64 TARGET="Visual Studio 12 Win64"
pack-win32-relative:
$(MAKE) pack-winXX BITS=32 TARGET="Visual Studio 12" MOREOPTS='-D "USE_RELATIVE=ON" -D "USE_MAINTAINER_MODE=ON" -D "USE_BACKTRACE=ON"'
pack-win64-relative:
$(MAKE) pack-winXX BITS=64 TARGET="Visual Studio 12 Win64" MOREOPTS='-D "USE_RELATIVE=ON" -D "USE_MAINTAINER_MODE=ON" -D "USE_BACKTRACE=ON"'
win64-relative:
$(MAKE) winXX-cmake BITS=64 TARGET="Visual Studio 12 Win64" MOREOPTS='-D "USE_RELATIVE=ON"'
$(MAKE) winXX-build BITS=64 BUILD_TARGET=RelWithDebInfo
win64-relative-debug:
$(MAKE) winXX-cmake BITS=64 TARGET="Visual Studio 12 Win64" MOREOPTS='-D "USE_RELATIVE=ON" -D "USE_MAINTAINER_MODE=ON" -D "USE_BACKTRACE=ON"'
$(MAKE) winXX-build BITS=64 BUILD_TARGET=Debug
pack-winXX:
rm -rf Build$(BITS) && mkdir Build$(BITS)
${MAKE} winXX-cmake BITS="$(BITS)" TARGET="$(TARGET)" VERSION="`awk '{print substr($$3,2,length($$3)-2);}' build.h`"
${MAKE} winXX-build BITS="$(BITS)" TARGET="$(TARGET)" BUILD_TARGET=RelWithDebInfo
${MAKE} packXX BITS="$(BITS)"
pack-winXX-MOREOPTS:
rm -rf Build$(BITS) && mkdir Build$(BITS)
${MAKE} winXX-cmake BITS="$(BITS)" TARGET="$(TARGET)" VERSION="`awk '{print substr($$3,2,length($$3)-2);}' build.h`" MOREOPTS=$(MOREOPTS)
${MAKE} winXX-build BITS="$(BITS)" TARGET="$(TARGET)" BUILD_TARGET=Debug
${MAKE} packXX BITS="$(BITS)" TARGET="$(TARGET)" BUILD_TARGET=Debug
winXX-cmake: checkcmake
rm -f ./.file-list-js
cd Build$(BITS) && cmake \
-G "$(TARGET)" \
-D "ARANGODB_VERSION=${VERSION}" \
-D "CMAKE_BUILD_TYPE=RelWithDebInfo" \
-D "BUILD_TYPE=RelWithDebInfo" \
-D "CPACK_PACKAGE_VERSION_MAJOR=${VERSION_MAJOR}" \
-D "CPACK_PACKAGE_VERSION_MINOR=${VERSION_MINOR}" \
-D "CPACK_PACKAGE_VERSION_PATCH=${VERSION_PATCH}" \
-D "LIBEV_VERSION=4.11" \
-D "V8_VERSION=4.3.61" \
-D "ZLIB_VERSION=1.2.7" \
-D "BUILD_ID=${BUILD_ID}" \
$(MOREOPTS) \
..
winXX-build:
cp Installation/Windows/Icons/arangodb.ico Build$(BITS)
cd Build$(BITS) && cmake --build . --config $(BUILD_TARGET)
packXX:
./Installation/file-copy-js.sh . Build$(BITS)
cd Build$(BITS) && cp -a bin/RelWithDebInfo bin/Release
cd Build$(BITS) && cpack -G NSIS -D "BUILD_TYPE=RelWithDebInfo"
cd Build$(BITS) && cpack -G ZIP -D "BUILD_TARGET=RelWithDebInfo"
./Installation/Windows/installer-generator.sh $(BITS) $(shell pwd)
checkcmake:
if test -z "`cmake --help |grep -i visual`"; then \
echo "Your cmake is not sufficient; it lacks support for visual studio." ; \
exit 1; \
fi
################################################################################
### @brief generates a tar archive
################################################################################
.PHONY: pack-tar pack-tar-config
pack-tar-config:
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var
pack-tar:
rm -rf /tmp/pack-arangodb
make install-strip DESTDIR=/tmp/pack-arangodb
tar -c -v -z -f arangodb-$(VERSION).tar.gz -C /tmp/pack-arangodb .
## -----------------------------------------------------------------------------
## --SECTION-- END-OF-FILE
## -----------------------------------------------------------------------------
## Local Variables:
## mode: outline-minor
## outline-regexp: "### @brief\\|## --SECTION--\\|# -\\*-"
## End: