68 lines
2.2 KiB
Makefile
68 lines
2.2 KiB
Makefile
# ---------- FSharp support using SWIG ----------
|
|
.PHONY: help_fsharp # Generate list of F# targets with descriptions.
|
|
help_fsharp:
|
|
@echo Use one of the following F# targets:
|
|
ifeq ($(SYSTEM),win)
|
|
@tools\grep.exe "^.PHONY: .* #" $(CURDIR)/makefiles/Makefile.fsharp.mk | tools\sed.exe "s/\.PHONY: \(.*\) # \(.*\)/\1\t\2/"
|
|
@echo.
|
|
else
|
|
@grep "^.PHONY: .* #" $(CURDIR)/makefiles/Makefile.fsharp.mk | sed "s/\.PHONY: \(.*\) # \(.*\)/\1\t\2/" | expand -t20
|
|
@echo
|
|
endif
|
|
|
|
BASE_ORTOOLS_DLL_NAME=Google.OrTools
|
|
FSHARP_ORTOOLS_DLL_NAME=$(BASE_ORTOOLS_DLL_NAME).FSharp
|
|
CLEAN_FILES=$(FSHARP_ORTOOLS_DLL_NAME).*
|
|
|
|
# Check for required build tools
|
|
ifeq ($(SYSTEM), win)
|
|
FSHARP_COMPILER := fsc.exe
|
|
FSHARP_EXECUTABLE := $(shell $(WHICH) $(FSHARP_COMPILER) 2>nul)
|
|
FLAG_PREFIX := /
|
|
else # UNIX
|
|
FSHARP_COMPILER := fsharpc
|
|
FSHARP_EXECUTABLE := $(shell which $(FSHARP_COMPILER))
|
|
FLAG_PREFIX := --
|
|
endif
|
|
|
|
# Check whether to build Debug or Release version
|
|
ifeq (${FSHARP_DEBUG}, 1)
|
|
FSHARP_DEBUG = $(FLAG_PREFIX)debug
|
|
endif
|
|
|
|
# Check for key pair for strong naming
|
|
ifdef CLR_KEYFILE
|
|
FS_SIGNING_FLAGS := $(FLAG_PREFIX)keyfile:$(CLR_KEYFILE)
|
|
endif
|
|
|
|
ifeq ("$(VisualStudioVersion)", "15.0")
|
|
FS_NOCPYCORE := $(FLAG_PREFIX)nocopyfsharpcore
|
|
else
|
|
FS_NOCPYCORE :=
|
|
endif
|
|
|
|
.PHONY: fsharp # Build F# OR-Tools. Set environment variable FSHARP_DEBUG=1 for debug symbols.
|
|
fsharp: csharp
|
|
ifneq ($(FSHARP_EXECUTABLE),)
|
|
"$(FSHARP_EXECUTABLE)" $(FLAG_PREFIX)target:library $(FLAG_PREFIX)out:bin$S$(FSHARP_ORTOOLS_DLL_NAME).dll $(FLAG_PREFIX)platform:anycpu $(FS_NOCPYCORE) $(FLAG_PREFIX)lib:bin $(FLAG_PREFIX)reference:$(BASE_ORTOOLS_DLL_NAME).dll $(FSHARP_DEBUG) $(FS_SIGNING_FLAGS) ortools$Sfsharp$S$(FSHARP_ORTOOLS_DLL_NAME).fsx
|
|
else
|
|
$(warning Cannot find '$(FSHARP_COMPILER)' command which is needed for build. Please make sure it is installed and in system path.)
|
|
endif
|
|
|
|
.PHONY: test_fsharp # Test F# OR-Tools using various examples.
|
|
ifneq ($(FSHARP_EXECUTABLE),)
|
|
test_fsharp: test_fsharp_examples
|
|
BUILT_LANGUAGES +=, F\#
|
|
else
|
|
test_fsharp: fsharp
|
|
endif
|
|
|
|
.PHONY: clean_fsharp # Clean F# output from previous build.
|
|
clean_fsharp:
|
|
-$(DEL) bin$S$(CLEAN_FILES)
|
|
|
|
.PHONY: detect_fsharp # Show variables used to build F# OR-Tools.
|
|
detect_fsharp:
|
|
@echo FSHARP_COMPILER = $(FSHARP_COMPILER)
|
|
@echo FSHARP_EXECUTABLE = "$(FSHARP_EXECUTABLE)"
|