Files
ortools-clone/makefiles/Makefile.port
2016-08-19 14:24:11 +02:00

189 lines
5.7 KiB
Makefile
Executable File

# Let's discover something about where we run
ifeq "$(SHELL)" "cmd.exe"
SYSTEM = win
else
ifeq "$(SHELL)" "sh.exe"
SYSTEM = win
else
SYSTEM = unix
endif
endif
# Unix specific part.
ifeq ("$(SYSTEM)","unix")
OR_TOOLS_TOP ?= $(shell pwd)
OS = $(shell uname -s)
ifneq ($(shell which python2.7),)
DETECTED_PYTHON_VERSION = 2.7
else
ifneq ($(shell which python2.6),)
DETECTED_PYTHON_VERSION = 2.6
endif
endif
ifeq ($(OS),Linux)
PLATFORM = LINUX
CODEPORT = OpSys-Linux
LBITS = $(shell getconf LONG_BIT)
DISTRIBUTION_ID = $(shell lsb_release -i -s)
DISTRIBUTION_NUMBER = $(shell lsb_release -r -s)
DISTRIBUTION = $(DISTRIBUTION_ID)-$(DISTRIBUTION_NUMBER)
ifeq ($(LBITS),64)
NETPLATFORM = anycpu
PORT = $(DISTRIBUTION)-64bit
PTRLENGTH = 64
GUROBI_PLATFORM=linux64
CANDIDATE_JDK_ROOTS = \
/usr/local/buildtools/java/jdk-64 \
/usr/lib/jvm/java-1.7.0-openjdk.x86_64 \
/usr/lib64/jvm/java-1.6.0-openjdk-1.6.0 \
/usr/lib64/jvm/java-6-sun-1.6.0.26 \
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64 \
/usr/lib/jvm/java-6-openjdk-amd64 \
/usr/lib/jvm/java-7-openjdk-amd64 \
/usr/lib/jvm/java-8-openjdk-amd64 \
/usr/lib/jvm/java-9-openjdk-amd64
else
NETPLATFORM = x86
PORT = $(DISTRIBUTION)-32bit
PTRLENGTH = 32
GUROBI_PLATFORM=linux32
CANDIDATE_JDK_ROOTS = \
/usr/local/buildtools/java/jdk-32 \
/usr/lib/jvm/java-1.7.0-openjdk-i386 \
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0 \
/usr/lib/jvm/java-6-sun-1.6.0.26 \
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86 \
/usr/lib/jvm/java-6-openjdk-i386 \
/usr/lib/jvm/java-7-openjdk-i386
endif
SELECTED_JDK_DEF = LINUX_JDK_ROOT = $(firstword $(wildcard $(CANDIDATE_JDK_ROOTS)))
endif
ifeq ($(OS),Darwin) # Assume Mac Os X
PLATFORM = MACOSX
OS_VERSION = $(shell sw_vers -productVersion)
PORT = MacOsX-$(OS_VERSION)
CODEPORT = OpSys-OSX
NETPLATFORM = x64
PTRLENGTH = 64
GUROBI_PLATFORM=mac64
CANDIDATE_JDK_HEADERS = \
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/include \
/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers \
/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers \
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/include \
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/include
SELECTED_JDK_DEF = MAC_JDK_HEADERS = $(wildcard $(CANDIDATE_JDK_HEADERS))
MAC_MIN_VERSION = 10.8
endif
# Look at mono compiler.
REAL_MCS = $(shell which mcs)
ifneq ($(REAL_MCS),)
ifeq ($(PLATFORM),LINUX)
MCS_VERSION = $(shell $(REAL_MCS) --version | grep -P '\d\.\d' -o | head -1)
else # Mac OS X
MCS_VERSION = $(shell $(REAL_MCS) --Version | grep -E '\d\.\d' -o | head -1)
endif
ifneq ("4.2", "$(word 1,$(sort 4.2 $(MCS_VERSION)))")
MCS := $(null)
else
MCS := $(REAL_MCS)
endif
endif
endif
# Windows specific part.
ifeq ("$(SYSTEM)","win")
# Detect 32/64bit
ifeq ("$(Platform)", "X64")
PLATFORM = WIN64
PTRLENGTH = 64
CMAKE_SUFFIX = Win64
ARCH= /DARCH_K8
CBC_PLATFORM_PREFIX = x64
GLPK_PLATFORM = w64
NETPLATFORM = x64
else
PLATFORM = Win32
PTRLENGTH = 32
CMAKE_SUFFIX =
ARCH =
CBC_PLATFORM_PREFIX = Win32
GLPK_PLATFORM = w32
NETPLATFORM = x86
endif
# Detect visual studio version
ifeq ("$(VisualStudioVersion)", "12.0")
VISUAL_STUDIO_YEAR = 2013
VISUAL_STUDIO_MAJOR = 12
else
ifeq ("$(VisualStudioVersion)", "14.0")
VISUAL_STUDIO_YEAR = 2015
VISUAL_STUDIO_MAJOR = 14
else
$(warning "Unrecognized visual studio version")
endif
endif
# Set common windows variables
# OS Specific
OS = Windows
OR_TOOLS_TOP_AUX = $(shell cd)
OR_TOOLS_TOP = $(shell echo $(OR_TOOLS_TOP_AUX) | tools\\sed.exe -e "s/\\/\\\\/g" | tools\\sed.exe -e "s/ //g")
CODEPORT = OpSys-Windows
# Compiler specific
PORT = VisualStudio$(VISUAL_STUDIO_YEAR)-$(PTRLENGTH)bit
VS_RELEASE = v$(VISUAL_STUDIO_MAJOR)0
VS_COMTOOLS = $(VISUAL_STUDIO_MAJOR)0
ifeq ("$(CMAKE_SUFFIX)","")
CMAKE_PLATFORM = "Visual Studio $(VISUAL_STUDIO_MAJOR) $(VISUAL_STUDIO_YEAR)"
else
CMAKE_PLATFORM = "Visual Studio $(VISUAL_STUDIO_MAJOR) $(VISUAL_STUDIO_YEAR) $(CMAKE_SUFFIX)"
endif
# Third party specific
CBC_PLATFORM = $(CBC_PLATFORM_PREFIX)-$(VS_RELEASE)-Release
SCIP_MAKEFILE = \# SCIP not compiled
# Java specific
SELECTED_JDK_DEF = WINDOWS_JDK_DIR = \# Please define JDK root.
endif
# Get github revision level
ifeq ("$(SYSTEM)","unix")
GIT_REVISION:= $(shell git log --oneline | wc -l | tr -d ' ')
GIT_HASH:= $(shell git log --pretty=format:'%h' -n 1)
else
GIT_REVISION:= $(shell git log --oneline | find /C " ")
GIT_HASH:= $(shell git log --pretty=format:'%h' -n 1)
endif
OR_TOOLS_VERSION := $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR).$(GIT_REVISION)
OR_TOOLS_SHORT_VERSION := $(OR_TOOLS_MAJOR).$(OR_TOOLS_MINOR)
INSTALL_DIR=or-tools_$(PORT)_v$(OR_TOOLS_VERSION)
FZ_INSTALL_DIR=or-tools_flatzinc_$(PORT)_v$(OR_TOOLS_VERSION)
printport:
@echo SHELL = $(SHELL)
@echo OR_TOOLS_TOP = $(OR_TOOLS_TOP)
@echo SYSTEM = $(SYSTEM)
@echo PLATFORM = $(PLATFORM)
@echo PTRLENGTH = $(PTRLENGTH)
@echo GIT_REVISION = $(GIT_REVISION)
@echo GIT_HASH = $(GIT_HASH)
@echo PORT = $(PORT)
@echo OR_TOOLS_VERSION = $(OR_TOOLS_VERSION)
@echo OR_TOOLS_SHORT_VERSION = $(OR_TOOLS_SHORT_VERSION)
ifeq ("$(SYSTEM)","unix")
@echo MCS = $(MCS)
@echo DETECTED_PYTHON_VERSION = $(DETECTED_PYTHON_VERSION)
@echo SELECTED_JDK_DEF = $(SELECTED_JDK_DEF)
else
@echo CMAKE_PLATFORM = $(CMAKE_PLATFORM)
endif