1- repo = $( shell basename $( CURDIR ) )
1+ .PHONY : build test
22
3- .PHONY : test coverage-report jupyter
3+ BUILD_DIR_ROOT =build
4+ BUILD_DIR_MODULES =modules
5+ BUILD_TYPE =Release
6+ BUILD_DIR_CMAKE =cmake
7+ BUILD_DIR_BIN =bin
8+ BUILD_PATH =$(BUILD_DIR_ROOT ) /$(BUILD_TYPE ) /$(BUILD_DIR_CMAKE )
9+ BUILD_PATH_BIN =$(BUILD_DIR_ROOT ) /$(BUILD_TYPE ) /$(BUILD_DIR_BIN )
410
5- jupyter :
6- @echo " Installing kernel $( repo) in jupyter"
7- -yes | jupyter kernelspec uninstall $(repo )
8- poetry run python -m ipykernel install --user --name $(repo )
11+ API_TEST_RESULTS_PATH =$(PWD ) /apiTestResults.xml
12+ PYTHON_TEST_DIR =$(BUILD_DIR_ROOT ) /$(BUILD_TYPE ) /bin/isx
913
14+ ifndef TEST_DATA_DIR
15+ TEST_DATA_DIR=test_data
16+ endif
1017
11- install-poetry :
12- @bash install-poetry.sh
18+ ifndef THIRD_PARTY_DIR
19+ THIRD_PARTY_DIR=third_party
20+ endif
1321
14- install : install-poetry
15- @echo " Installing py_isx..."
16- poetry check --lock || poetry lock
17- poetry install --verbose
22+ PYTHON_VERSION =$(shell python -c 'import sys; print(".".join(map(str, sys.version_info[:2]) ))')
1823
19- install-test : install-poetry
20- @echo " Installing py_isx & dependencies for testing..."
21- poetry check --lock || poetry lock
22- poetry install --extras " test" --verbose
24+ ifeq ($(OS ) , Windows_NT)
25+ DETECTED_OS = windows
26+ else
27+ UNAME_S = $(shell uname -s)
28+ ifeq ($(UNAME_S), Linux)
29+ DETECTED_OS = linux
30+ else ifeq ($(UNAME_S), Darwin)
31+ DETECTED_OS = mac
32+
33+ ifeq ($(PYTHON_VERSION), 3.9)
34+ _MACOSX_DEPLOYMENT_TARGET=10.11
35+ else ifeq ($(PYTHON_VERSION), 3.10)
36+ _MACOSX_DEPLOYMENT_TARGET=10.11
37+ else ifeq ($(PYTHON_VERSION), 3.11)
38+ _MACOSX_DEPLOYMENT_TARGET=10.11
39+ else ifeq ($(PYTHON_VERSION), 3.12)
40+ _MACOSX_DEPLOYMENT_TARGET=10.15
41+ endif
42+ endif
43+ endif
2344
24- test : install-test
25- poetry run pytest -sx --failed-first
45+ VERSION_MAJOR =2
46+ VERSION_MINOR =0
47+ VERSION_PATCH =0
48+ VERSION_BUILD =0
49+ IS_BETA =1
50+ WITH_CUDA =0
51+ ASYNC_API =1
52+ WITH_ALGOS =0
2653
27- test-pip :
28- @echo " Testing code installed on base env using pip..."
29- pytest -s
54+ CMAKE_OPTIONS =\
55+ -DCMAKE_BUILD_TYPE=$(BUILD_TYPE ) \
56+ -DISX_VERSION_MAJOR=${VERSION_MAJOR}\
57+ -DISX_VERSION_MINOR=${VERSION_MINOR}\
58+ -DISX_VERSION_PATCH=${VERSION_PATCH}\
59+ -DISX_VERSION_BUILD=${VERSION_BUILD}\
60+ -DISX_IS_BETA=${IS_BETA}\
61+ -DISX_WITH_CUDA=${WITH_CUDA}\
62+ -DISX_ASYNC_API=${ASYNC_API} \
63+ -DISX_WITH_ALGOS=${WITH_ALGOS} \
3064
65+ ifeq ($(DETECTED_OS ) , windows)
66+ CMAKE_GENERATOR = Visual Studio 14 2015 Win64
67+ else ifeq ($(DETECTED_OS), linux)
68+ CMAKE_GENERATOR = Unix Makefiles
69+ CMAKE_OPTIONS += -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
70+ else ifeq ($(DETECTED_OS), mac)
71+ CMAKE_GENERATOR = Xcode
72+ endif
3173
32- serve : install-poetry
33- @echo " Serving docs locally..."
34- poetry run mkdocs serve
74+ check_os :
75+ @echo " Verifying detected OS"
76+ ifndef DETECTED_OS
77+ @echo "Failed to detect supported OS"; exit 1
78+ else
79+ @echo "Detected OS: ${DETECTED_OS}"
80+ endif
81+ ifeq ($(DETECTED_OS ) , mac)
82+ @echo "Detected python version: ${PYTHON_VERSION}, using mac osx deployment target: ${MACOSX_DEPLOYMENT_TARGET}"
83+ endif
3584
36- setup.py : pyproject.toml README.md
37- poetry run poetry2setup > setup.py
85+ clean :
86+ @rm -rf build
3887
88+ ifeq ($(DETECTED_OS ) , mac)
89+ build : export MACOSX_DEPLOYMENT_TARGET=${_MACOSX_DEPLOYMENT_TARGET}
90+ endif
91+ build : check_os
92+ mkdir -p $(BUILD_PATH ) && \
93+ cd $(BUILD_PATH ) && \
94+ THIRD_PARTY_DIR=$(THIRD_PARTY_DIR ) cmake $(CMAKE_OPTIONS ) -G " $( CMAKE_GENERATOR) " ../../../
95+ ifeq ($(DETECTED_OS ) , windows)
96+ cd $(BUILD_PATH) && \
97+ "/c/Program Files (x86)/MSBuild/14.0/Bin/MSBuild.exe" Project.sln //p:Configuration=$(BUILD_TYPE) //maxcpucount:8
98+ else ifeq ($(DETECTED_OS), linux)
99+ cd $(BUILD_PATH) && \
100+ make -j2
101+ else ifeq ($(DETECTED_OS), mac)
102+ cd $(BUILD_PATH) && \
103+ xcodebuild -alltargets -configuration $(BUILD_TYPE) -project Project.xcodeproj CODE_SIGN_IDENTITY=""
104+ endif
105+ cd $(BUILD_PATH_BIN) && \
106+ python -m build
39107
40- deploy : install-poetry
41- @echo " Deploying documentation to GitHub pages..."
42- poetry run mkdocs build
43- poetry run mkdocs gh-deploy
108+ rebuild : clean build
109+
110+ test : build
111+ cd $(BUILD_PATH_BIN ) /dist && pip install --force-reinstall isx-* .whl
112+ cd build/Release && \
113+ ISX_TEST_DATA_PATH=$(TEST_DATA_DIR ) python -m pytest --disable-warnings -v -s --junit-xml=$(API_TEST_RESULTS_PATH ) test $(TEST_ARGS )
0 commit comments