diff --git a/CMakeLists.txt b/CMakeLists.txt index 4dbb51a..e199898 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,7 @@ option(HUNTER_ENABLED "Enable Hunter package manager support" ${hunter_and_examp include(cmake/cable/bootstrap.cmake) include(CableBuildType) include(CableCompilerSettings) +include(CablePackage) include(CableToolchains) include(CMakePackageConfigHelpers) include(GNUInstallDirs) @@ -86,19 +87,6 @@ if(EVMC_INSTALL) ) endif() -if(WIN32) - set(CPACK_GENERATOR ZIP) - set(CPACK_SOURCE_GENERATOR ZIP) -else() - set(CPACK_GENERATOR TGZ) - set(CPACK_SOURCE_GENERATOR TGZ) -endif() -string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name) -set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${PROJECT_VERSION}-${system_name}) -set(CPACK_SOURCE_PACKAGE_FILE_NAME ${PROJECT_NAME}-${PROJECT_VERSION}-source) -set(CPACK_PACKAGE_CHECKSUM SHA256) -set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY FALSE) - set( CPACK_SOURCE_IGNORE_FILES /\\\\.git/ @@ -110,5 +98,4 @@ set( /Cargo.toml /target/ ) - -include(CPack) +cable_add_archive_package() diff --git a/cmake/cable/CableBuildInfo.cmake b/cmake/cable/CableBuildInfo.cmake index 51e27a3..5ce703e 100644 --- a/cmake/cable/CableBuildInfo.cmake +++ b/cmake/cable/CableBuildInfo.cmake @@ -69,6 +69,7 @@ function(cable_add_buildinfo_library) ${cable_buildinfo_template_dir}/buildinfo.cmake ${cable_buildinfo_template_dir}/buildinfo.c.in ${cable_buildinfo_template_dir}/buildinfo.json.in + ${cable_buildinfo_template_dir}/version.h.in ${name}-git ${output_dir}/gitinfo.txt ) diff --git a/cmake/cable/CableCompilerSettings.cmake b/cmake/cable/CableCompilerSettings.cmake index 8267da5..f86aa6e 100644 --- a/cmake/cable/CableCompilerSettings.cmake +++ b/cmake/cable/CableCompilerSettings.cmake @@ -53,7 +53,7 @@ macro(cable_configure_compiler) if(CABLE_COMPILER_GNULIKE) if(NOT cable_NO_PEDANTIC) - add_compile_options(-pedantic) + add_compile_options(-Wpedantic) endif() # Enable basing warnings set and treat them as errors. diff --git a/cmake/cable/CablePackage.cmake b/cmake/cable/CablePackage.cmake new file mode 100644 index 0000000..d3207da --- /dev/null +++ b/cmake/cable/CablePackage.cmake @@ -0,0 +1,28 @@ +# Cable: CMake Bootstrap Library. +# Copyright 2019 Pawel Bylica. +# Licensed under the Apache License, Version 2.0. See the LICENSE file. + +if(cable_package_included) + return() +endif() +set(cable_package_included TRUE) + +# Configures CPack to build the archive package. +macro(cable_add_archive_package) + if(WIN32) + set(CPACK_GENERATOR ZIP) + set(CPACK_SOURCE_GENERATOR ZIP) + else() + set(CPACK_GENERATOR TGZ) + set(CPACK_SOURCE_GENERATOR TGZ) + endif() + string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name) + string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} system_processor) + set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${PROJECT_VERSION}-${system_name}-${system_processor}) + set(CPACK_SOURCE_PACKAGE_FILE_NAME ${PROJECT_NAME}-${PROJECT_VERSION}-source) + set(CPACK_PACKAGE_CHECKSUM SHA256) + set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY FALSE) + unset(system_name) + unset(system_processor) + include(CPack) +endmacro() diff --git a/cmake/cable/bootstrap.cmake b/cmake/cable/bootstrap.cmake index 95ae9b8..162a38a 100644 --- a/cmake/cable/bootstrap.cmake +++ b/cmake/cable/bootstrap.cmake @@ -10,7 +10,7 @@ # # This is internal variable automatically updated with external tools. # Use CABLE_VERSION variable if you need this information. -set(version 0.4.0) +set(version 0.4.3) # For convenience, add the project CMake module dir to module path. set(module_dir ${CMAKE_CURRENT_SOURCE_DIR}/cmake) diff --git a/cmake/cable/buildinfo/buildinfo.cmake b/cmake/cable/buildinfo/buildinfo.cmake index f4dbbc3..651b754 100644 --- a/cmake/cable/buildinfo/buildinfo.cmake +++ b/cmake/cable/buildinfo/buildinfo.cmake @@ -1,7 +1,8 @@ # Cable: CMake Bootstrap Library. -# Copyright 2018 Pawel Bylica. -# Licensed under the Apache License, Version 2.0. See the LICENSE file. +# Copyright 2018-2019 Pawel Bylica. +# Licensed under the Apache License, Version 2.0. +string(TOUPPER "${PROJECT_NAME}" PROJECT_NAME_UPPERCASE) string(TOLOWER "${SYSTEM_NAME}" SYSTEM_NAME) string(TOLOWER "${SYSTEM_PROCESSOR}" SYSTEM_PROCESSOR) string(TOLOWER "${COMPILER_ID}" COMPILER_ID) @@ -82,3 +83,5 @@ configure_file(${CMAKE_CURRENT_LIST_DIR}/buildinfo.c.in ${OUTPUT_DIR}/buildinfo. configure_file(${CMAKE_CURRENT_LIST_DIR}/buildinfo.json.in ${OUTPUT_DIR}/buildinfo.json) configure_file(${CMAKE_CURRENT_LIST_DIR}/buildinfo.sh.in ${OUTPUT_DIR}/buildinfo.sh) configure_file(${CMAKE_CURRENT_LIST_DIR}/buildinfo.ps1.in ${OUTPUT_DIR}/buildinfo.ps1) + +configure_file(${CMAKE_CURRENT_LIST_DIR}/version.h.in ${OUTPUT_DIR}/version.h) diff --git a/cmake/cable/buildinfo/version.h.in b/cmake/cable/buildinfo/version.h.in new file mode 100644 index 0000000..c53e536 --- /dev/null +++ b/cmake/cable/buildinfo/version.h.in @@ -0,0 +1,14 @@ +/* Cable: CMake Bootstrap Library. + * Copyright 2019 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. + */ + +/* Generated by Cable Build Info on @TIMESTAMP@. Do not modify directly. */ + +#pragma once + +#define @PROJECT_NAME_UPPERCASE@_VERSION "@PROJECT_VERSION@" + +#ifdef __cplusplus +constexpr auto @PROJECT_NAME@_version = "@PROJECT_VERSION@"; +#endif diff --git a/cmake/cable/toolchains/cxx11-32bit.cmake b/cmake/cable/toolchains/cxx11-32bit.cmake index 7627441..f3f28cf 100644 --- a/cmake/cable/toolchains/cxx11-32bit.cmake +++ b/cmake/cable/toolchains/cxx11-32bit.cmake @@ -1,10 +1,10 @@ # Cable: CMake Bootstrap Library. -# Copyright 2018 Pawel Bylica. -# Licensed under the Apache License, Version 2.0. See the LICENSE file. +# Copyright 2018-2019 Pawel Bylica. +# Licensed under the Apache License, Version 2.0. set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) set(CMAKE_CXX_EXTENSIONS OFF) -set(CMAKE_C_FLAGS -m32 CACHE STRING "C compiler flags" FORCE) -set(CMAKE_CXX_FLAGS -m32 CACHE STRING "C++ compiler flags" FORCE) +set(CMAKE_C_FLAGS_INIT -m32) +set(CMAKE_CXX_FLAGS_INIT -m32) diff --git a/cmake/cable/toolchains/cxx14-32bit.cmake b/cmake/cable/toolchains/cxx14-32bit.cmake new file mode 100644 index 0000000..15145ff --- /dev/null +++ b/cmake/cable/toolchains/cxx14-32bit.cmake @@ -0,0 +1,10 @@ +# Cable: CMake Bootstrap Library. +# Copyright 2019 Pawel Bylica. +# Licensed under the Apache License, Version 2.0. + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED TRUE) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(CMAKE_C_FLAGS_INIT -m32) +set(CMAKE_CXX_FLAGS_INIT -m32) diff --git a/cmake/cable/toolchains/cxx17-32bit.cmake b/cmake/cable/toolchains/cxx17-32bit.cmake new file mode 100644 index 0000000..183aab3 --- /dev/null +++ b/cmake/cable/toolchains/cxx17-32bit.cmake @@ -0,0 +1,10 @@ +# Cable: CMake Bootstrap Library. +# Copyright 2019 Pawel Bylica. +# Licensed under the Apache License, Version 2.0. + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED TRUE) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(CMAKE_C_FLAGS_INIT -m32) +set(CMAKE_CXX_FLAGS_INIT -m32)