mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-27 02:31:09 +00:00
Make possible to switch between Python 2 & 3 easily. Fixes also possible confusion when having both 32-bit and 64-bit Python installations side by side.
This commit is contained in:
@@ -1,9 +1,37 @@
|
|||||||
|
################################################################################
|
||||||
|
# #
|
||||||
|
# This file is part of IfcOpenShell. #
|
||||||
|
# #
|
||||||
|
# IfcOpenShell is free software: you can redistribute it and/or modify #
|
||||||
|
# it under the terms of the Lesser GNU General Public License as published by #
|
||||||
|
# the Free Software Foundation, either version 3.0 of the License, or #
|
||||||
|
# (at your option) any later version. #
|
||||||
|
# #
|
||||||
|
# IfcOpenShell is distributed in the hope that it will be useful, #
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||||
|
# Lesser GNU General Public License for more details. #
|
||||||
|
# #
|
||||||
|
# You should have received a copy of the Lesser GNU General Public License #
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||||
|
# #
|
||||||
|
################################################################################
|
||||||
|
|
||||||
FIND_PACKAGE(SWIG)
|
FIND_PACKAGE(SWIG)
|
||||||
|
|
||||||
IF(SWIG_FOUND)
|
IF(SWIG_FOUND)
|
||||||
|
|
||||||
INCLUDE(${SWIG_USE_FILE})
|
INCLUDE(${SWIG_USE_FILE})
|
||||||
|
|
||||||
|
IF(NOT "$ENV{OCC_LIBRARY_DIR}" STREQUAL "")
|
||||||
|
SET(PYTHON_INCLUDE_DIR $ENV{PYTHON_INCLUDE_DIR} CACHE FILEPATH "Python header files")
|
||||||
|
MESSAGE(STATUS "Looking for Python header files in: ${PYTHON_INCLUDE_DIR}")
|
||||||
|
ENDIF()
|
||||||
|
IF(NOT "$ENV{OCC_LIBRARY_DIR}" STREQUAL "")
|
||||||
|
SET(PYTHON_LIBRARY $ENV{PYTHON_LIBRARY} CACHE FILEPATH "Python library file")
|
||||||
|
MESSAGE(STATUS "Looking for Python library file in: ${PYTHON_LIBRARY}")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
FIND_PACKAGE(PythonLibs)
|
FIND_PACKAGE(PythonLibs)
|
||||||
|
|
||||||
IF(PYTHONLIBS_FOUND)
|
IF(PYTHONLIBS_FOUND)
|
||||||
@@ -16,22 +44,30 @@ SET(CMAKE_SWIG_FLAGS "")
|
|||||||
|
|
||||||
SET_SOURCE_FILES_PROPERTIES(IfcPython.i PROPERTIES CPLUSPLUS ON)
|
SET_SOURCE_FILES_PROPERTIES(IfcPython.i PROPERTIES CPLUSPLUS ON)
|
||||||
SWIG_ADD_MODULE(ifcopenshell_wrapper python IfcPython.i)
|
SWIG_ADD_MODULE(ifcopenshell_wrapper python IfcPython.i)
|
||||||
SWIG_LINK_LIBRARIES(ifcopenshell_wrapper ${PYTHON_LIBRARIES} IfcParse IfcGeom TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO TKFillet TKOffset ${ICU_LIBRARIES})
|
SWIG_LINK_LIBRARIES(ifcopenshell_wrapper
|
||||||
|
${PYTHON_LIBRARIES} IfcParse IfcGeom TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing
|
||||||
|
TKTopAlgo TKMesh TKPrim TKBool TKBO TKFillet TKOffset ${ICU_LIBRARIES}
|
||||||
|
)
|
||||||
|
|
||||||
# To install IfcPython let's get the site-packages dir from python
|
# To install IfcPython let's get the site-packages dir from python
|
||||||
EXECUTE_PROCESS(COMMAND python -c "import sys; from distutils.sysconfig import get_python_lib; sys.stdout.write(get_python_lib())"
|
EXECUTE_PROCESS(COMMAND
|
||||||
|
python -c "import sys; from distutils.sysconfig import get_python_lib; sys.stdout.write(get_python_lib())"
|
||||||
OUTPUT_VARIABLE python_package_dir)
|
OUTPUT_VARIABLE python_package_dir)
|
||||||
|
|
||||||
|
IF("${python_package_dir}" STREQUAL "")
|
||||||
|
MESSAGE(FATAL_ERROR "Python executable not in PATH, aborting")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
INSTALL(FILES
|
INSTALL(FILES
|
||||||
"${CMAKE_BINARY_DIR}/ifcwrap/ifcopenshell_wrapper.py"
|
"${CMAKE_BINARY_DIR}/ifcwrap/ifcopenshell_wrapper.py"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/__init__.py"
|
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/__init__.py"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/guid.py"
|
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/guid.py"
|
||||||
DESTINATION "${python_package_dir}/ifcopenshell")
|
DESTINATION "${python_package_dir}/ifcopenshell")
|
||||||
INSTALL(FILES
|
INSTALL(FILES
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/geom/__init__.py"
|
"${CMAKE_CURRENT_SOURCE_DIR}/../ifcopenshell-python/ifcopenshell/geom/__init__.py"
|
||||||
DESTINATION "${python_package_dir}/ifcopenshell/geom")
|
DESTINATION "${python_package_dir}/ifcopenshell/geom")
|
||||||
INSTALL(TARGETS _ifcopenshell_wrapper DESTINATION "${python_package_dir}/ifcopenshell")
|
INSTALL(TARGETS _ifcopenshell_wrapper DESTINATION "${python_package_dir}/ifcopenshell")
|
||||||
|
|
||||||
ENDIF(PYTHONLIBS_FOUND)
|
ENDIF(PYTHONLIBS_FOUND)
|
||||||
|
|
||||||
ENDIF(SWIG_FOUND)
|
ENDIF(SWIG_FOUND)
|
||||||
|
|||||||
+4
-2
@@ -282,6 +282,8 @@ IF NOT %ERRORLEVEL%==0 GOTO :Error
|
|||||||
:: TODO Update to 3.5 when it's released as it will have an option to install debug libraries.
|
:: TODO Update to 3.5 when it's released as it will have an option to install debug libraries.
|
||||||
set PYTHON_VERSION=3.4.3
|
set PYTHON_VERSION=3.4.3
|
||||||
IF "%IFCOS_USE_PYTHON2%"=="TRUE" set PYTHON_VERSION=2.7.10
|
IF "%IFCOS_USE_PYTHON2%"=="TRUE" set PYTHON_VERSION=2.7.10
|
||||||
|
set PY_VER_MAJOR_MINOR=%PYTHON_VERSION:~0,3%
|
||||||
|
set PY_VER_MAJOR_MINOR=%PY_VER_MAJOR_MINOR:.=%
|
||||||
set DEPENDENCY_NAME=Python %PYTHON_VERSION%
|
set DEPENDENCY_NAME=Python %PYTHON_VERSION%
|
||||||
set DEPENDENCY_DIR=N/A
|
set DEPENDENCY_DIR=N/A
|
||||||
set PYTHON_AMD64_POSTFIX=.amd64
|
set PYTHON_AMD64_POSTFIX=.amd64
|
||||||
@@ -299,9 +301,9 @@ IF "%IFCOS_INSTALL_PYTHON%"=="TRUE" (
|
|||||||
msiexec /x %PYTHON_INSTALLER% /qn
|
msiexec /x %PYTHON_INSTALLER% /qn
|
||||||
)
|
)
|
||||||
|
|
||||||
IF NOT EXIST "%INSTALL_DIR%\Python". (
|
IF NOT EXIST "%INSTALL_DIR%\Python%PY_VER_MAJOR_MINOR%". (
|
||||||
cecho {0D}Installing %DEPENDENCY_NAME%. Please be patient, this will take a while.{# #}{\n}
|
cecho {0D}Installing %DEPENDENCY_NAME%. Please be patient, this will take a while.{# #}{\n}
|
||||||
msiexec /qn /i %PYTHON_INSTALLER% TARGETDIR=%INSTALL_DIR%\Python
|
msiexec /qn /i %PYTHON_INSTALLER% TARGETDIR=%INSTALL_DIR%\Python%PY_VER_MAJOR_MINOR%
|
||||||
) ELSE (
|
) ELSE (
|
||||||
cecho {0D}%DEPENDENCY_NAME% already installed. Skipping.{# #}{\n}
|
cecho {0D}%DEPENDENCY_NAME% already installed. Skipping.{# #}{\n}
|
||||||
)
|
)
|
||||||
|
|||||||
+4
-1
@@ -28,7 +28,10 @@ After the dependencies are build, execute run-cmake.bat. The batch file expects
|
|||||||
is provided, the same default value as above is used. This batch script will create a folder of form
|
is provided, the same default value as above is used. This batch script will create a folder of form
|
||||||
build-vs<VERSION>-<ARCHITECTURE> which will contain the solution and project files for Visual Studio.
|
build-vs<VERSION>-<ARCHITECTURE> which will contain the solution and project files for Visual Studio.
|
||||||
IMPORTANT: If you wish to use any library from a custom location, modify the paths in run-cmake.bat
|
IMPORTANT: If you wish to use any library from a custom location, modify the paths in run-cmake.bat
|
||||||
accordingly.
|
accordingly. If you used IFCOS_USE_PYTHON2=TRUE when running build-deps.cmd, currently it must also be
|
||||||
|
set accordingly before running run-cmake.bat, if run-cmake.bat is not run in the same command prompt
|
||||||
|
session as build-deps.cmd was run.
|
||||||
|
|
||||||
|
|
||||||
All of the dependencies are build as static libraries against the static run-time allowing the developer
|
All of the dependencies are build as static libraries against the static run-time allowing the developer
|
||||||
to effortlessly deploy standalone binaries.
|
to effortlessly deploy standalone binaries.
|
||||||
|
|||||||
+13
-2
@@ -27,11 +27,18 @@ setlocal EnableDelayedExpansion
|
|||||||
|
|
||||||
call vs-cfg.cmd %1
|
call vs-cfg.cmd %1
|
||||||
|
|
||||||
set CMAKE_INSTALL_PREFIX=%CD%\..\installed-vs%VS_VER%-%TARGET_ARCH%
|
pushd ..
|
||||||
|
set CMAKE_INSTALL_PREFIX=%CD%\installed-vs%VS_VER%-%TARGET_ARCH%
|
||||||
|
popd
|
||||||
|
|
||||||
set BUILD_DIR=build-vs%VS_VER%-%TARGET_ARCH%
|
set BUILD_DIR=build-vs%VS_VER%-%TARGET_ARCH%
|
||||||
IF NOT EXIST ..\%BUILD_DIR%. mkdir ..\%BUILD_DIR%
|
IF NOT EXIST ..\%BUILD_DIR%. mkdir ..\%BUILD_DIR%
|
||||||
pushd ..\%BUILD_DIR%
|
pushd ..\%BUILD_DIR%
|
||||||
|
:: TODO Duplicate code with build-deps.cmd: have some kind of build cache/config file and read Pyhon version from there.
|
||||||
|
set PYTHON_VERSION=3.4.3
|
||||||
|
IF "%IFCOS_USE_PYTHON2%"=="TRUE" set PYTHON_VERSION=2.7.10
|
||||||
|
set PY_VER_MAJOR_MINOR=%PYTHON_VERSION:~0,3%
|
||||||
|
set PY_VER_MAJOR_MINOR=%PY_VER_MAJOR_MINOR:.=%
|
||||||
|
|
||||||
set BOOST_ROOT=%DEPS_DIR%\boost
|
set BOOST_ROOT=%DEPS_DIR%\boost
|
||||||
REM set BOOST_INCLUDEDIR=%DEPS_DIR%\boost
|
REM set BOOST_INCLUDEDIR=%DEPS_DIR%\boost
|
||||||
@@ -42,7 +49,9 @@ set OCC_INCLUDE_DIR=%INSTALL_DIR%\oce\include\oce
|
|||||||
set OCC_LIBRARY_DIR=%INSTALL_DIR%\oce\Win%ARCH_BITS%\lib
|
set OCC_LIBRARY_DIR=%INSTALL_DIR%\oce\Win%ARCH_BITS%\lib
|
||||||
set OPENCOLLADA_INCLUDE_DIR=%INSTALL_DIR%\OpenCOLLADA\include\opencollada
|
set OPENCOLLADA_INCLUDE_DIR=%INSTALL_DIR%\OpenCOLLADA\include\opencollada
|
||||||
set OPENCOLLADA_LIBRARY_DIR=%INSTALL_DIR%\OpenCOLLADA\lib\opencollada
|
set OPENCOLLADA_LIBRARY_DIR=%INSTALL_DIR%\OpenCOLLADA\lib\opencollada
|
||||||
set PYTHONPATH=%INSTALL_DIR%\Python
|
set PYTHON_INCLUDE_DIR=%INSTALL_DIR%\Python%PY_VER_MAJOR_MINOR%\include
|
||||||
|
set PYTHON_LIBRARY=%INSTALL_DIR%\Python%PY_VER_MAJOR_MINOR%\libs\python%PY_VER_MAJOR_MINOR%.lib
|
||||||
|
set PYTHONPATH=%INSTALL_DIR%\Python%PY_VER_MAJOR_MINOR%
|
||||||
set SWIG_DIR=%INSTALL_DIR%\swigwin
|
set SWIG_DIR=%INSTALL_DIR%\swigwin
|
||||||
set PATH=%PATH%;%SWIG_DIR%;%PYTHONPATH%
|
set PATH=%PATH%;%SWIG_DIR%;%PYTHONPATH%
|
||||||
:: TODO 3ds Max SDK?
|
:: TODO 3ds Max SDK?
|
||||||
@@ -62,6 +71,8 @@ echo OCC_INCLUDE_DIR = %OCC_INCLUDE_DIR%
|
|||||||
echo OCC_LIBRARY_DIR = %OCC_LIBRARY_DIR%
|
echo OCC_LIBRARY_DIR = %OCC_LIBRARY_DIR%
|
||||||
echo OPENCOLLADA_INCLUDE_DIR = %OPENCOLLADA_INCLUDE_DIR%
|
echo OPENCOLLADA_INCLUDE_DIR = %OPENCOLLADA_INCLUDE_DIR%
|
||||||
echo OPENCOLLADA_LIBRARY_DIR = %OPENCOLLADA_LIBRARY_DIR%
|
echo OPENCOLLADA_LIBRARY_DIR = %OPENCOLLADA_LIBRARY_DIR%
|
||||||
|
echo PYTHON_INCLUDE_DIR = %PYTHON_INCLUDE_DIR%
|
||||||
|
echo PYTHON_LIBRARY = %PYTHON_LIBRARY%
|
||||||
echo PYTHONPATH = %PYTHONPATH%
|
echo PYTHONPATH = %PYTHONPATH%
|
||||||
echo SWIG_DIR = %SWIG_DIR%
|
echo SWIG_DIR = %SWIG_DIR%
|
||||||
echo.
|
echo.
|
||||||
|
|||||||
Reference in New Issue
Block a user