1
- repo = $( shell basename $( CURDIR ) )
1
+ .PHONY : build test
2
2
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 )
4
10
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
9
13
14
+ ifndef TEST_DATA_DIR
15
+ TEST_DATA_DIR=test_data
16
+ endif
10
17
11
- install-poetry :
12
- @bash install-poetry.sh
18
+ ifndef THIRD_PARTY_DIR
19
+ THIRD_PARTY_DIR=third_party
20
+ endif
13
21
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]) ))')
18
23
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
23
44
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
26
53
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} \
30
64
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
31
73
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
35
84
36
- setup.py : pyproject.toml README.md
37
- poetry run poetry2setup > setup.py
85
+ clean :
86
+ @rm -rf build
38
87
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
39
107
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