cmake_minimum_required(VERSION 3.16)
set(CMAKE_CXX_COMPILER "g++")
project(mstx VERSION 26.0.0)
get_filename_component(ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}" ABSOLUTE)
get_filename_component(THIRDPARTY_PATH thirdparty/ ABSOLUTE)
get_filename_component(MSTX_HEADER c/include/ ABSOLUTE)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_FLAGS "-std=c++11")
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
message(STATUS "Using ccache: ${CCACHE_PROGRAM}")
set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
else()
message(STATUS "ccache not found, using native compiler.")
endif()
find_program(PYTHON NAMES python3 python)
if(NOT PYTHON)
message(FATAL_ERROR "Could not find python3 or python in PATH!")
else()
message(STATUS "Found Python: ${PYTHON}")
endif()
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/output CACHE STRING "install prefix" FORCE)
message(STATUS "No install prefix selected, default to ${CMAKE_INSTALL_PREFIX}")
endif()
set(INSTALL_GTEST OFF)
if (${BUILD_TESTS})
message(STATUS "Enable unit tests build")
add_subdirectory(thirdparty/googletest EXCLUDE_FROM_ALL)
add_subdirectory(test/c)
endif()
include(cmake/options.cmake)
add_subdirectory(c)
add_subdirectory(python)
set(PACKAGE_DIR ${CMAKE_CURRENT_BINARY_DIR}/package/mstx)
add_custom_command(
OUTPUT ${PACKAGE_DIR}/package.flag
COMMAND ${CMAKE_COMMAND} -E make_directory ${PACKAGE_DIR}/lib64 ${CMAKE_INSTALL_PREFIX} ${PACKAGE_DIR}/include/
COMMAND ${CMAKE_COMMAND} -E copy_directory ${ROOT_DIR}/c/include/mstx ${PACKAGE_DIR}/include/mstx
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:mstx> $<TARGET_FILE:ms_tools_ext> ${PACKAGE_DIR}/lib64
COMMAND ${CMAKE_COMMAND} -E copy ${ROOT_DIR}/README.md ${PACKAGE_DIR}/
COMMAND ${CMAKE_COMMAND} -E copy ${ROOT_DIR}/setup.py ${PACKAGE_DIR}/
COMMAND ${CMAKE_COMMAND} -E copy ${ROOT_DIR}/MANIFEST.in ${PACKAGE_DIR}/
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_INSTALL_PREFIX}/mstx*.whl
COMMAND cd ${PACKAGE_DIR} && ${PYTHON} setup.py bdist_wheel --dist-dir ${CMAKE_INSTALL_PREFIX}/
COMMAND chmod 550 ${CMAKE_INSTALL_PREFIX}/*.whl
COMMAND touch ${PACKAGE_DIR}/package.flag
COMMENT "Copy mstx include folder and so to output dir, and make mstx whl package"
)
add_custom_target(package_mstx ALL DEPENDS
ms_tools_ext
mstx
${ROOT_DIR}/MANIFEST.in
${ROOT_DIR}/README.md
${ROOT_DIR}/setup.py
${PACKAGE_DIR}/package.flag)