StormByte - Build Master
Loading...
Searching...
No Matches
helpers.cmake
Go to the documentation of this file.
1
38function(create_cmake_stages _file_configure _file_compile _file_install _component _component_title _srcdir _builddir _options _library_mode _output_libraries)
39 # Optional indent level
40 if(ARGC GREATER 10)
41 set(_indent_level "${ARGV10}")
42 string(REPEAT "\t" ${_indent_level} _CMAKE_INDENT_)
43 else()
44 set(_CMAKE_INDENT_ "")
45 endif()
46
47 if(${_library_mode} STREQUAL "static")
48 set(_CMAKE_SHARED_MODE "OFF")
49 elseif(${_library_mode} STREQUAL "shared")
50 set(_CMAKE_SHARED_MODE "ON")
51 else()
52 message(FATAL_ERROR "Unknown library mode '${_library_mode}' in create_cmake_stages")
53 endif()
54
55 set(_CMAKE_COMPONENT_TITLE "${_component_title}")
56 string(APPEND _CMAKE_STAGE_BUILD "${_component}" "_build")
57 string(APPEND _CMAKE_STAGE_INSTALL "${_component}" "_install")
58 set(_CMAKE_SRCDIR "${_srcdir}")
59 set(_CMAKE_BUILD_DIR "${_builddir}")
60 set(_CMAKE_OUTPUT_LIBRARIES "${_output_libraries}")
61
62 list_join(_CMAKE_OPTIONS "${_options}" "\n\t\t")
63
64 sanitize_for_filename(_CMAKE_COMPONENT_SAFE "${_component}")
65
66 set(_CMAKE_CONFIGURE_FILE
67 "${BUILDMASTER_SCRIPTS_CMAKEDIR}/${_CMAKE_COMPONENT_SAFE}_configure.cmake"
68 )
69 set(_CMAKE_BUILD_FILE
70 "${BUILDMASTER_SCRIPTS_CMAKEDIR}/${_CMAKE_COMPONENT_SAFE}_build.cmake"
71 )
72 set(_CMAKE_INSTALL_FILE
73 "${BUILDMASTER_SCRIPTS_CMAKEDIR}/${_CMAKE_COMPONENT_SAFE}_install.cmake"
74 )
75
76 configure_file(
77 "${BUILDMASTER_TOOLS_CMAKE_SRCDIR}/configure.cmake.in"
78 "${_CMAKE_CONFIGURE_FILE}"
79 @ONLY
80 )
81 configure_file(
82 "${BUILDMASTER_TOOLS_CMAKE_SRCDIR}/build.cmake.in"
83 "${_CMAKE_BUILD_FILE}"
84 @ONLY
85 )
86 configure_file(
87 "${BUILDMASTER_TOOLS_CMAKE_SRCDIR}/install.cmake.in"
88 "${_CMAKE_INSTALL_FILE}"
89 @ONLY
90 )
91 set(${_file_configure} "${_CMAKE_CONFIGURE_FILE}" PARENT_SCOPE)
92 set(${_file_compile} "${_CMAKE_BUILD_FILE}" PARENT_SCOPE)
93 set(${_file_install} "${_CMAKE_INSTALL_FILE}" PARENT_SCOPE)
94endfunction()