Skip to content

Commit

Permalink
[feat] Makefile updates to work in windows.
Browse files Browse the repository at this point in the history
Requirements:

* make (installed with choco)
* windows git tools in path (for cp, ln and few other tools)

CPython in windows doesn't have 3 postfix in the binary so extra
environment/make variable "PYTHON_BIN" was introduced to tell make
the "correct" python interpreter.

using pwd is problematic on windows with git installed because it will
return posix path which confuses windows gnu make.
  • Loading branch information
Jani Mikkonen committed Nov 24, 2020
1 parent dadbe9b commit 96eea1d
Show file tree
Hide file tree
Showing 13 changed files with 102 additions and 90 deletions.
19 changes: 10 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
-include Makefile.local

CURRENT_DIR = $(shell pwd)
CURRENT_DIR = ${CURDIR}
BUILD_DIR = $(CURRENT_DIR)/build
VENDOR_DIR = $(CURRENT_DIR)/vendor
PYTHON_BIN ?= python3

CC_BUILD_DIR = $(BUILD_DIR)/CodeChecker
CC_BUILD_BIN_DIR = $(CC_BUILD_DIR)/bin
Expand Down Expand Up @@ -111,12 +112,12 @@ package: package_dir_structure set_git_commit_template package_plist_to_html pac
cp -r $(CC_ANALYZER)/config/* $(CC_BUILD_DIR)/config && \
cp -r $(CC_WEB)/config/* $(CC_BUILD_DIR)/config && \
cp -r $(CC_SERVER)/config/* $(CC_BUILD_DIR)/config && \
./scripts/build/extend_version_file.py -r $(ROOT) \
$(CC_BUILD_DIR)/config/analyzer_version.json \
$(CC_BUILD_DIR)/config/web_version.json
${PYTHON_BIN} ./scripts/build/extend_version_file.py -r $(ROOT) \
$(CC_BUILD_DIR)/config/analyzer_version.json \
$(CC_BUILD_DIR)/config/web_version.json

mkdir -p $(CC_BUILD_DIR)/cc_bin && \
./scripts/build/create_commands.py -b $(BUILD_DIR) \
${PYTHON_BIN} ./scripts/build/create_commands.py -b $(BUILD_DIR) \
--cmd-dir codechecker_common/cmd \
$(CC_WEB)/codechecker_web/cmd \
$(CC_SERVER)/codechecker_server/cmd \
Expand All @@ -137,21 +138,21 @@ standalone_package: venv package
# the virtual environment beforehand.
cd $(CC_BUILD_BIN_DIR) && \
mv CodeChecker _CodeChecker && \
$(ROOT)/scripts/build/wrap_binary_in_venv.py \
${PYTHON_BIN} $(ROOT)/scripts/build/wrap_binary_in_venv.py \
-e $(ROOT)/venv \
-b _CodeChecker \
-o CodeChecker

venv:
# Create a virtual environment which can be used to run the build package.
virtualenv -p python3 venv && \
virtualenv -p ${PYTHON_BIN} venv && \
$(ACTIVATE_RUNTIME_VENV) && \
pip3 install -r $(CC_ANALYZER)/requirements.txt && \
pip3 install -r $(CC_WEB)/requirements.txt

venv_osx:
# Create a virtual environment which can be used to run the build package.
virtualenv -p python3 venv && \
virtualenv -p ${PYTHON_BIN} venv && \
$(ACTIVATE_RUNTIME_VENV) && \
pip3 install -r $(CC_ANALYZER)/requirements_py/osx/requirements.txt && \
pip3 install -r $(CC_WEB)/requirements_py/osx/requirements.txt
Expand All @@ -169,7 +170,7 @@ pip_dev_deps:

venv_dev:
# Create a virtual environment for development.
virtualenv -p python3 venv_dev && \
virtualenv -p ${PYTHON_BIN} venv_dev && \
$(ACTIVATE_DEV_VENV) && $(PIP_DEV_DEPS_CMD)

clean_venv_dev:
Expand Down
9 changes: 5 additions & 4 deletions analyzer/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
-include Makefile.local

CURRENT_DIR = $(shell pwd)
CURRENT_DIR = ${CURDIR}
BUILD_DIR ?= $(CURRENT_DIR)/build
PYTHON_BIN ?= python3

CC_BUILD_DIR = $(BUILD_DIR)/CodeChecker
CC_BUILD_LIB_DIR = $(CC_BUILD_DIR)/lib/python3
Expand All @@ -26,7 +27,7 @@ pip_dev_deps:

venv_dev:
# Create a virtual environment for development.
virtualenv -p python3 venv_dev && \
virtualenv -p ${PYTHON_BIN} venv_dev && \
$(ACTIVATE_DEV_VENV) && pip3 install -r $(VENV_DEV_REQ_FILE)

clean_venv_dev:
Expand Down Expand Up @@ -87,12 +88,12 @@ package: package_plist_to_html package_tu_collector package_analyzer package_mer
# Copy config files and extend 'version.json' file with git information.
cp -r $(ROOT)/config $(CC_BUILD_DIR) && \
cp -r $(CURRENT_DIR)/config/* $(CC_BUILD_DIR)/config && \
$(ROOT)/scripts/build/extend_version_file.py -r $(ROOT) \
${PYTHON_BIN} $(ROOT)/scripts/build/extend_version_file.py -r $(ROOT) \
$(CC_BUILD_DIR)/config/analyzer_version.json \

# Copy CodeChecker entry point sub-commands.
mkdir -p $(CC_BUILD_DIR)/cc_bin && \
$(ROOT)/scripts/build/create_commands.py -b $(BUILD_DIR) \
${PYTHON_BIN} $(ROOT)/scripts/build/create_commands.py -b $(BUILD_DIR) \
--cmd-dir codechecker_common/cmd \
$(CC_ANALYZER)/codechecker_analyzer/cmd \
--bin-file $(ROOT)/bin/CodeChecker \
Expand Down
5 changes: 3 additions & 2 deletions analyzer/tests/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

# Test project configuration, tests are run on these files.
TEST_PROJECT ?= TEST_PROJ=$(CURRENT_DIR)/tests/projects
PYTHON_BIN ?= python3

REPO_ROOT ?= REPO_ROOT=$(ROOT)

Expand Down Expand Up @@ -50,11 +51,11 @@ FUNCTIONAL_TEST_CMD = $(REPO_ROOT) $(TEST_PROJECT) \
nosetests $(NOSECFG) tests/functional || exit 1

test_functional:
python3 $(ROOT)/scripts/test/check_clang.py || exit 1;
${PYTHON_BIN} $(ROOT)/scripts/test/check_clang.py || exit 1;
$(FUNCTIONAL_TEST_CMD)

test_functional_in_env: venv_dev
python3 $(ROOT)/scripts/test/check_clang.py || exit 1;
${PYTHON_BIN} $(ROOT)/scripts/test/check_clang.py || exit 1;
$(ACTIVATE_DEV_VENV) && $(FUNCTIONAL_TEST_CMD)

test_build_logger:
Expand Down
21 changes: 11 additions & 10 deletions analyzer/tools/merge_clang_extdef_mappings/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
#
# -------------------------------------------------------------------------

CURRENT_DIR = $(shell pwd)
CURRENT_DIR = ${CURDIR}
ROOT = $(CURRENT_DIR)

BUILD_DIR = $(CURRENT_DIR)/build
PYTHON_BIN ?= python3
MERGE_CLANG_EXTDEF_MAPS_DIR = $(BUILD_DIR)/merge_clang_extdef_mappings

ACTIVATE_DEV_VENV ?= . venv_dev/bin/activate
Expand All @@ -23,11 +24,11 @@ all: package

venv:
# Create a virtual environment which can be used to run the build package.
virtualenv -p python3 venv && $(ACTIVATE_RUNTIME_VENV)
virtualenv -p ${PYTHON_BIN} venv && $(ACTIVATE_RUNTIME_VENV)

venv_dev:
# Create a virtual environment for development.
virtualenv -p python3 venv_dev && \
virtualenv -p ${PYTHON_BIN} venv_dev && \
$(ACTIVATE_DEV_VENV) && pip3 install -r $(VENV_DEV_REQ_FILE)

clean_venv_dev:
Expand All @@ -37,25 +38,25 @@ include tests/Makefile

package:
# Install package in 'development mode'.
python3 setup.py develop
${PYTHON_BIN} setup.py develop

build:
python3 setup.py build --build-purelib $(MERGE_CLANG_EXTDEF_MAPS_DIR)
${PYTHON_BIN} setup.py build --build-purelib $(MERGE_CLANG_EXTDEF_MAPS_DIR)

dist:
# Create a source distribution.
python3 setup.py sdist
${PYTHON_BIN} setup.py sdist

upload_test: dist
# Upload package to the TestPyPI repository.
$(eval PKG_NAME := $(shell python3 setup.py --name))
$(eval PKG_VERSION := $(shell python3 setup.py --version))
$(eval PKG_NAME := $(shell ${PYTHON_BIN} setup.py --name))
$(eval PKG_VERSION := $(shell ${PYTHON_BIN} setup.py --version))
twine upload -r testpypi dist/$(PKG_NAME)-$(PKG_VERSION).tar.gz

upload: dist
# Upload package to the PyPI repository.
$(eval PKG_NAME := $(shell python3 setup.py --name))
$(eval PKG_VERSION := $(shell python3 setup.py --version))
$(eval PKG_NAME := $(shell ${PYTHON_BIN} setup.py --name))
$(eval PKG_VERSION := $(shell ${PYTHON_BIN} setup.py --version))
twine upload -r pypi dist/$(PKG_NAME)-$(PKG_VERSION).tar.gz

clean:
Expand Down
21 changes: 11 additions & 10 deletions analyzer/tools/statistics_collector/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
#
# -------------------------------------------------------------------------

CURRENT_DIR = $(shell pwd)
CURRENT_DIR = ${CURDIR}
ROOT = $(CURRENT_DIR)

BUILD_DIR = $(CURRENT_DIR)/build
PYTHON_BIN ?= python3
STATISTICS_COLLECTOR_DIR = $(BUILD_DIR)/statistics_collector

ACTIVATE_DEV_VENV ?= . venv_dev/bin/activate
Expand All @@ -23,11 +24,11 @@ all: package

venv:
# Create a virtual environment which can be used to run the build package.
virtualenv -p python3 venv && $(ACTIVATE_RUNTIME_VENV)
virtualenv -p ${PYTHON_BIN} venv && $(ACTIVATE_RUNTIME_VENV)

venv_dev:
# Create a virtual environment for development.
virtualenv -p python3 venv_dev && \
virtualenv -p ${PYTHON_BIN} venv_dev && \
$(ACTIVATE_DEV_VENV) && pip3 install -r $(VENV_DEV_REQ_FILE)

clean_venv_dev:
Expand All @@ -37,25 +38,25 @@ include tests/Makefile

package:
# Install package in 'development mode'.
python3 setup.py develop
${PYTHON_BIN} setup.py develop

build:
python3 setup.py build --build-purelib $(STATISTICS_COLLECTOR_DIR)
${PYTHON_BIN} setup.py build --build-purelib $(STATISTICS_COLLECTOR_DIR)

dist:
# Create a source distribution.
python3 setup.py sdist
${PYTHON_BIN} setup.py sdist

upload_test: dist
# Upload package to the TestPyPI repository.
$(eval PKG_NAME := $(shell python3 setup.py --name))
$(eval PKG_VERSION := $(shell python3 setup.py --version))
$(eval PKG_NAME := $(shell ${PYTHON_BIN} setup.py --name))
$(eval PKG_VERSION := $(shell ${PYTHON_BIN} setup.py --version))
twine upload -r testpypi dist/$(PKG_NAME)-$(PKG_VERSION).tar.gz

upload: dist
# Upload package to the PyPI repository.
$(eval PKG_NAME := $(shell python3 setup.py --name))
$(eval PKG_VERSION := $(shell python3 setup.py --version))
$(eval PKG_NAME := $(shell ${PYTHON_BIN} setup.py --name))
$(eval PKG_VERSION := $(shell ${PYTHON_BIN} setup.py --version))
twine upload -r pypi dist/$(PKG_NAME)-$(PKG_VERSION).tar.gz

clean:
Expand Down
2 changes: 1 addition & 1 deletion codechecker_common/tests/unit/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Environment variables to run tests.

CURRENT_DIR = $(shell pwd)
CURRENT_DIR = ${CURDIR}
# Root of the repository.
REPO_ROOT ?= REPO_ROOT=$(CURRENT_DIR)/../../../

Expand Down
23 changes: 12 additions & 11 deletions tools/codechecker_report_hash/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
#
# -------------------------------------------------------------------------

CURRENT_DIR = $(shell pwd)
CURRENT_DIR = ${CURDIR}
ROOT = $(CURRENT_DIR)

BUILD_DIR = $(CURRENT_DIR)/build
PYTHON_BIN ?= python3
CC_REPORT_HASH_DIR = $(BUILD_DIR)/codechecker_report_hash

ACTIVATE_DEV_VENV ?= . venv_dev/bin/activate
Expand All @@ -23,11 +24,11 @@ all: package

venv:
# Create a virtual environment which can be used to run the build package.
virtualenv -p python3 venv && $(ACTIVATE_RUNTIME_VENV)
virtualenv -p ${PYTHON_BIN} venv && $(ACTIVATE_RUNTIME_VENV)

venv_dev:
# Create a virtual environment for development.
virtualenv -p python3 venv_dev && \
virtualenv -p ${PYTHON_BIN} venv_dev && \
$(ACTIVATE_DEV_VENV) && pip3 install -r $(VENV_DEV_REQ_FILE)

clean_venv_dev:
Expand All @@ -37,28 +38,28 @@ include tests/Makefile

package:
# Install package in 'development mode'.
python3 setup.py develop
${PYTHON_BIN} setup.py develop

build:
python3 setup.py build --build-purelib $(CC_REPORT_HASH_DIR)
${PYTHON_BIN} setup.py build --build-purelib $(CC_REPORT_HASH_DIR)

dist:
# Create a source distribution.
python3 setup.py sdist
${PYTHON_BIN} setup.py sdist

upload_test: dist
# Upload package to the TestPyPI repository.
$(eval PKG_NAME := $(shell python3 setup.py --name))
$(eval PKG_VERSION := $(shell python3 setup.py --version))
$(eval PKG_NAME := $(shell ${PYTHON_BIN} setup.py --name))
$(eval PKG_VERSION := $(shell ${PYTHON_BIN} setup.py --version))
twine upload -r testpypi dist/$(PKG_NAME)-$(PKG_VERSION).tar.gz

upload: dist
# Upload package to the PyPI repository.
$(eval PKG_NAME := $(shell python3 setup.py --name))
$(eval PKG_VERSION := $(shell python3 setup.py --version))
$(eval PKG_NAME := $(shell ${PYTHON_BIN} setup.py --name))
$(eval PKG_VERSION := $(shell ${PYTHON_BIN} setup.py --version))
twine upload -r pypi dist/$(PKG_NAME)-$(PKG_VERSION).tar.gz

clean:
rm -rf $(BUILD_DIR)
rm -rf dist
rm -rf codechecker_report_hash.egg-info
rm -rf codechecker_report_hash.egg-info
21 changes: 11 additions & 10 deletions tools/plist_to_html/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@

CODEMIRROR = https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0

CURRENT_DIR = $(shell pwd)
PYTHON_BIN ?= python3
CURRENT_DIR = ${CURDIR}
ROOT = $(CURRENT_DIR)

BUILD_DIR = $(CURRENT_DIR)/build
Expand All @@ -30,14 +31,14 @@ all: package

venv:
# Create a virtual environment which can be used to run the build package.
virtualenv -p python3 venv && $(ACTIVATE_RUNTIME_VENV)
virtualenv -p ${PYTHON_BIN} venv && $(ACTIVATE_RUNTIME_VENV)

pip_dev_deps:
pip3 install -r $(VENV_DEV_REQ_FILE)

venv_dev:
# Create a virtual environment for development.
virtualenv -p python3 venv_dev && \
virtualenv -p ${PYTHON_BIN} venv_dev && \
$(ACTIVATE_DEV_VENV) && pip3 install -r $(VENV_DEV_REQ_FILE)

clean_venv_dev:
Expand All @@ -47,25 +48,25 @@ include tests/Makefile

package: dep
# Install package in 'development mode'.
python3 setup.py develop
${PYTHON_BIN} setup.py develop

build: dep
python3 setup.py build --build-purelib $(PLIST_TO_HTML_DIR)
${PYTHON_BIN} setup.py build --build-purelib $(PLIST_TO_HTML_DIR)

dist: dep
# Create a source distribution.
python3 setup.py sdist
${PYTHON_BIN} setup.py sdist

upload_test: dist
# Upload package to the TestPyPI repository.
$(eval PKG_NAME := $(shell python3 setup.py --name))
$(eval PKG_VERSION := $(shell python3 setup.py --version))
$(eval PKG_NAME := $(shell ${PYTHON_BIN} setup.py --name))
$(eval PKG_VERSION := $(shell ${PYTHON_BIN} setup.py --version))
twine upload -r testpypi dist/$(PKG_NAME)-$(PKG_VERSION).tar.gz

upload: dist
# Upload package to the PyPI repository.
$(eval PKG_NAME := $(shell python3 setup.py --name))
$(eval PKG_VERSION := $(shell python3 setup.py --version))
$(eval PKG_NAME := $(shell ${PYTHON_BIN} setup.py --name))
$(eval PKG_VERSION := $(shell ${PYTHON_BIN} setup.py --version))
twine upload -r pypi dist/$(PKG_NAME)-$(PKG_VERSION).tar.gz

vendor_dir:
Expand Down
Loading

0 comments on commit 96eea1d

Please sign in to comment.