Skip to content

Commit e45065f

Browse files
committed
Functions renamed from bcm_* to cm_*. Project renamed to CMakeModules.
cm_project and cm_workspace definitions implemented. Basic patch functions implemented.
1 parent e939449 commit e45065f

File tree

27 files changed

+285
-236
lines changed

27 files changed

+285
-236
lines changed

doc/conf.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# -*- coding: utf-8 -*-
22
#
3-
# bcm documentation build configuration file, created by
3+
# modules documentation build configuration file, created by
44
# sphinx-quickstart on Tue Jan 10 00:08:48 2017.
55
#
66
# This file is execfile()d with the current directory set to its
@@ -49,7 +49,7 @@
4949
master_doc = 'index'
5050

5151
# General information about the project.
52-
project = u'bcm'
52+
project = u'modules'
5353
copyright = u'2017, Paul Fultz II'
5454
author = u'Paul Fultz II'
5555

@@ -134,7 +134,7 @@
134134
# The name for this set of Sphinx documents.
135135
# "<project> v<release> documentation" by default.
136136
#
137-
# html_title = u'bcm v0.1'
137+
# html_title = u'modules v0.1'
138138

139139
# A shorter title for the navigation bar. Default is the same as html_title.
140140
#
@@ -260,7 +260,7 @@
260260
# (source start file, target name, title,
261261
# author, documentclass [howto, manual, or own class]).
262262
latex_documents = [
263-
(master_doc, 'bcm.tex', u'bcm Documentation',
263+
(master_doc, 'modules.tex', u'modules Documentation',
264264
u'Paul Fultz II', 'manual'),
265265
]
266266

@@ -296,7 +296,7 @@
296296
# One entry per manual page. List of tuples
297297
# (source start file, name, description, authors, manual section).
298298
man_pages = [
299-
(master_doc, 'bcm', u'bcm Documentation',
299+
(master_doc, 'modules', u'modules Documentation',
300300
[author], 1)
301301
]
302302

@@ -311,8 +311,8 @@
311311
# (source start file, target name, title, author,
312312
# dir menu entry, description, category)
313313
texinfo_documents = [
314-
(master_doc, 'bcm', u'bcm Documentation',
315-
author, 'bcm', 'Boost cmake modules',
314+
(master_doc, 'modules', u'modules Documentation',
315+
author, 'modules', 'Boost cmake modules',
316316
'Miscellaneous'),
317317
]
318318

share/bcm/cmake/BCMConfig.cmake

Lines changed: 0 additions & 34 deletions
This file was deleted.

share/bcm/cmake/BCMIgnorePackage.cmake

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
2+
include(BCMFuture)
3+
enable_testing()
4+
5+
function(find_subdirectories INPUT_DIRECTORY SUBMODULE_HEADER)
6+
file(GLOB_RECURSE LIBS ${INPUT_DIRECTORY}/*CMakeLists.txt)
7+
foreach(lib ${LIBS})
8+
file(READ ${lib} CONTENT)
9+
if("${CONTENT}" MATCHES ${SUBMODULE_HEADER})
10+
get_filename_component(LIB_DIR ${lib} DIRECTORY)
11+
get_filename_component(LIB_NAME ${LIB_DIR} NAME)
12+
if(NOT "${LIB_NAME}" IN_LIST EXCLUDE_LIBS)
13+
add_subdirectory(${LIB_DIR})
14+
endif()
15+
endif()
16+
endforeach()
17+
endfunction()
18+
19+
function(cm_project WORKSPACE_NAME PROJECT_NAME)
20+
set(options)
21+
set(oneValueArgs DESCRIPTION VERSION)
22+
set(multiValueArgs LANGUAGES)
23+
24+
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
25+
26+
if(PARSE_UNPARSED_ARGUMENTS)
27+
message(FATAL_ERROR "Unknown keywords given to workspace(): \"${PARSE_UNPARSED_ARGUMENTS}\"")
28+
endif()
29+
30+
project(${WORKSPACE_NAME}_${PROJECT_NAME} ${PARSE_VERSION} ${PARSE_DESCRIPTION} ${PARSE_LANGUAGES})
31+
set(CURRENT_PROJECT_NAME ${PROJECT_NAME} PARENT_SCOPE)
32+
string(TOUPPER ${PROJECT_NAME} UPPER_PROJECT_NAME)
33+
set(CURRENT_UPPER_PROJECT_NAME ${UPPER_PROJECT_NAME} PARENT_SCOPE)
34+
endfunction()
35+
36+
function(cm_workspace WORKSPACE_NAME)
37+
set(options)
38+
set(oneValueArgs DESCRIPTION VERSION)
39+
set(multiValueArgs LANGUAGES)
40+
41+
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
42+
43+
if(PARSE_UNPARSED_ARGUMENTS)
44+
message(FATAL_ERROR "Unknown keywords given to workspace(): \"${PARSE_UNPARSED_ARGUMENTS}\"")
45+
endif()
46+
47+
project(${WORKSPACE_NAME} ${PARSE_VERSION} ${PARSE_DESCRIPTION} ${PARSE_LANGUAGES})
48+
set(CMAKE_WORKSPACE_NAME ${WORKSPACE_NAME} PARENT_SCOPE)
49+
string(TOUPPER ${WORKSPACE_NAME} UPPER_WORKSPACE_NAME)
50+
set(CMAKE_UPPER_WORKSPACE_NAME ${UPPER_WORKSPACE_NAME} PARENT_SCOPE)
51+
endfunction()
52+
53+
function(patch_directory SOURCES_DIRECTORY PATCHES_DIRECTORY OUTPUT_DIRECTORY)
54+
find_package(Patch)
55+
if(NOT Patch_FOUND)
56+
message(FATAL_ERROR "Patch utulity is not found")
57+
endif()
58+
59+
file(GLOB_RECURSE ${PATCHES_FILES} LIST_DIRECTORIES FALSE ${PATCHES_DIRECTORY})
60+
file(GLOB_RECURSE ${SOURCES_FILES} LIST_DIRECTORIES FALSE ${SOURCES_DIRECTORY})
61+
62+
foreach(PATCH_FILE IN PATCHES_FILES)
63+
string(REPLACE ".patch" ${PATCH_FILE} PATCH_FILE_NAME)
64+
list(FIND ${SOURCES_FILES} PATCH_FILE)
65+
execute_process(COMMAND patch)
66+
endforeach()
67+
endfunction()
68+
69+
function(patch_directory SOURCES_DIRECTORY PATCHES_DIRECTORY OUTPUT_DIRECTORY)
70+
find_package(Patch)
71+
if(NOT Patch_FOUND)
72+
message(FATAL_ERROR "Patch utulity is not found")
73+
endif()
74+
75+
file(GLOB_RECURSE ${PATCHES_FILES} LIST_DIRECTORIES FALSE ${PATCHES_DIRECTORY})
76+
file(GLOB_RECURSE ${SOURCES_FILES} LIST_DIRECTORIES FALSE ${SOURCES_DIRECTORY})
77+
78+
foreach(PATCH_FILE IN PATCHES_FILES)
79+
string(REPLACE ".patch" ${PATCH_FILE} PATCH_FILE_NAME)
80+
list(FIND ${SOURCES_FILES} PATCH_FILE)
81+
execute_process(COMMAND patch)
82+
endforeach()
83+
endfunction()
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@ include(BCMPkgConfig)
33
include(BCMInstallTargets)
44
include(BCMExport)
55

6-
function(bcm_deploy)
6+
function(cm_deploy)
77
set(options SKIP_HEADER_INSTALL)
88
set(oneValueArgs NAMESPACE COMPATIBILITY)
99
set(multiValueArgs TARGETS INCLUDE)
1010

11-
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
11+
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
1212

1313
if(PARSE_SKIP_HEADER_INSTALL)
14-
bcm_install_targets(TARGETS ${PARSE_TARGETS} INCLUDE ${PARSE_INCLUDE} SKIP_HEADER_INSTALL)
14+
cm_install_targets(TARGETS ${PARSE_TARGETS} INCLUDE ${PARSE_INCLUDE} SKIP_HEADER_INSTALL)
1515
else()
16-
bcm_install_targets(TARGETS ${PARSE_TARGETS} INCLUDE ${PARSE_INCLUDE} )
16+
cm_install_targets(TARGETS ${PARSE_TARGETS} INCLUDE ${PARSE_INCLUDE} )
1717
endif()
1818

19-
bcm_auto_pkgconfig(TARGET ${PARSE_TARGETS})
20-
bcm_auto_export(TARGETS ${PARSE_TARGETS} NAMESPACE ${PARSE_NAMESPACE} COMPATIBILITY ${PARSE_COMPATIBILITY})
19+
cm_auto_pkgconfig(TARGET ${PARSE_TARGETS})
20+
cm_auto_export(TARGETS ${PARSE_TARGETS} NAMESPACE ${PARSE_NAMESPACE} COMPATIBILITY ${PARSE_COMPATIBILITY})
2121

2222
foreach(TARGET ${PARSE_TARGETS})
2323
get_target_property(TARGET_NAME ${TARGET} EXPORT_NAME)
@@ -29,14 +29,14 @@ function(bcm_deploy)
2929
add_library(${EXPORT_LIB_TARGET} ALIAS ${TARGET})
3030
endif()
3131
set_target_properties(${TARGET} PROPERTIES INTERFACE_FIND_PACKAGE_NAME ${PROJECT_NAME})
32-
if(COMMAND bcm_add_rpath)
32+
if(COMMAND cm_add_rpath)
3333
get_target_property(TARGET_TYPE ${TARGET} TYPE)
3434
if(NOT "${TARGET_TYPE}" STREQUAL "INTERFACE_LIBRARY")
35-
bcm_add_rpath("$<TARGET_FILE_DIR:${TARGET}>")
35+
cm_add_rpath("$<TARGET_FILE_DIR:${TARGET}>")
3636
endif()
3737
endif()
38-
bcm_shadow_notify(${EXPORT_LIB_TARGET})
39-
bcm_shadow_notify(${TARGET})
38+
cm_shadow_notify(${EXPORT_LIB_TARGET})
39+
cm_shadow_notify(${TARGET})
4040
endforeach()
4141

4242
endfunction()
Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
include(GNUInstallDirs)
22
include(WriteBasicConfigVersionFile)
33

4-
function(bcm_get_target_package_source OUT_VAR TARGET)
4+
function(cm_get_target_package_source OUT_VAR TARGET)
55
set(RESULT)
66
if(TARGET ${TARGET})
77
get_property(TARGET_ALIAS TARGET ${TARGET} PROPERTY ALIASED_TARGET)
@@ -33,18 +33,18 @@ function(bcm_get_target_package_source OUT_VAR TARGET)
3333
else()
3434
set(TARGET_NAME "${TARGET}")
3535
endif()
36-
bcm_shadow_exists(HAS_TARGET ${TARGET})
36+
cm_shadow_exists(HAS_TARGET ${TARGET})
3737
set(RESULT "$<${HAS_TARGET}:$<TARGET_PROPERTY:${TARGET_NAME},INTERFACE_FIND_PACKAGE_NAME>>")
3838
endif()
3939
set(${OUT_VAR} "${RESULT}" PARENT_SCOPE)
4040
endfunction()
4141

42-
function(bcm_auto_export)
42+
function(cm_auto_export)
4343
set(options)
4444
set(oneValueArgs NAMESPACE EXPORT NAME COMPATIBILITY)
4545
set(multiValueArgs TARGETS)
4646

47-
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
47+
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
4848

4949
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)
5050
set(PACKAGE_NAME ${PROJECT_NAME})
@@ -78,7 +78,7 @@ include(CMakeFindDependencyMacro)
7878
foreach(TARGET ${PARSE_TARGETS})
7979
get_property(TARGET_LIBS TARGET ${TARGET} PROPERTY INTERFACE_LINK_LIBRARIES)
8080
foreach(LIB ${TARGET_LIBS})
81-
bcm_get_target_package_source(PKG_SRC ${LIB})
81+
cm_get_target_package_source(PKG_SRC ${LIB})
8282
set(HAS_PKG_SRC "$<BOOL:${PKG_SRC}>")
8383
string(APPEND CONFIG_FILE_CONTENT "# $<$<NOT:${HAS_PKG_SRC}>:Skip >Library: ${LIB}\n")
8484
string(APPEND CONFIG_FILE_CONTENT "$<${HAS_PKG_SRC}:find_dependency(${PKG_SRC})>\n")
@@ -121,26 +121,26 @@ include(\"\${CMAKE_CURRENT_LIST_DIR}/properties-${TARGET_FILE}.cmake\")
121121
set(COMPATIBILITY_ARG ${PARSE_COMPATIBILITY})
122122
endif()
123123
write_basic_config_version_file(
124-
${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}-version.cmake
125-
VERSION ${TARGET_VERSION}
126-
COMPATIBILITY ${COMPATIBILITY_ARG}
124+
${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}-version.cmake
125+
VERSION ${TARGET_VERSION}
126+
COMPATIBILITY ${COMPATIBILITY_ARG}
127127
)
128128

129129
set(NAMESPACE_ARG)
130130
if(PARSE_NAMESPACE)
131131
set(NAMESPACE_ARG "NAMESPACE;${PARSE_NAMESPACE}")
132132
endif()
133-
install( EXPORT ${TARGET_FILE}
134-
DESTINATION
135-
${CONFIG_PACKAGE_INSTALL_DIR}
136-
${NAMESPACE_ARG}
137-
)
138-
139-
install( FILES
140-
${CONFIG_FILE}
141-
${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}-version.cmake
142-
DESTINATION
143-
${CONFIG_PACKAGE_INSTALL_DIR})
133+
install(EXPORT ${TARGET_FILE}
134+
DESTINATION
135+
${CONFIG_PACKAGE_INSTALL_DIR}
136+
${NAMESPACE_ARG}
137+
)
138+
139+
install(FILES
140+
${CONFIG_FILE}
141+
${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}-version.cmake
142+
DESTINATION
143+
${CONFIG_PACKAGE_INSTALL_DIR})
144144

145145
endfunction()
146146

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,43 +29,43 @@ define_property(TARGET PROPERTY "INTERFACE_TARGET_EXISTS"
2929
FULL_DOCS "True if target exists"
3030
)
3131
# Create shadow target to notify that the target exists
32-
macro(bcm_shadow_notify TARGET)
33-
if(NOT TARGET _bcm_shadow_target_${TARGET})
34-
add_library(_bcm_shadow_target_${TARGET} INTERFACE IMPORTED GLOBAL)
32+
macro(cm_shadow_notify TARGET)
33+
if(NOT TARGET _cm_shadow_target_${TARGET})
34+
add_library(_cm_shadow_target_${TARGET} INTERFACE IMPORTED GLOBAL)
3535
endif()
36-
set_target_properties(_bcm_shadow_target_${TARGET} PROPERTIES INTERFACE_TARGET_EXISTS 1)
36+
set_target_properties(_cm_shadow_target_${TARGET} PROPERTIES INTERFACE_TARGET_EXISTS 1)
3737
endmacro()
3838
# Check if target exists by querying the shadow target
39-
macro(bcm_shadow_exists OUT TARGET)
39+
macro(cm_shadow_exists OUT TARGET)
4040
if("${TARGET}" MATCHES "^[_a-zA-Z0-9:]+$")
41-
if(NOT TARGET _bcm_shadow_target_${TARGET})
42-
add_library(_bcm_shadow_target_${TARGET} INTERFACE IMPORTED GLOBAL)
43-
set_target_properties(_bcm_shadow_target_${TARGET} PROPERTIES INTERFACE_TARGET_EXISTS 0)
41+
if(NOT TARGET _cm_shadow_target_${TARGET})
42+
add_library(_cm_shadow_target_${TARGET} INTERFACE IMPORTED GLOBAL)
43+
set_target_properties(_cm_shadow_target_${TARGET} PROPERTIES INTERFACE_TARGET_EXISTS 0)
4444
endif()
45-
set(${OUT} "$<TARGET_PROPERTY:_bcm_shadow_target_${TARGET},INTERFACE_TARGET_EXISTS>")
45+
set(${OUT} "$<TARGET_PROPERTY:_cm_shadow_target_${TARGET},INTERFACE_TARGET_EXISTS>")
4646
else()
4747
set(${OUT} "0")
4848
endif()
4949
endmacro()
5050
# Emulate rpath for windows
5151
if(WIN32)
52-
if(NOT COMMAND bcm_add_rpath)
52+
if(NOT COMMAND cm_add_rpath)
5353
foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES} "")
54-
file(WRITE ${CMAKE_BINARY_DIR}/bcm_set_rpath_pre-${CONFIG}.cmake "set(RPATH)\n")
55-
file(GENERATE OUTPUT ${CMAKE_BINARY_DIR}/bcm_set_rpath-${CONFIG}.cmake INPUT ${CMAKE_BINARY_DIR}/bcm_set_rpath_pre-${CONFIG}.cmake CONDITION $<CONFIG:${CONFIG}>)
54+
file(WRITE ${CMAKE_BINARY_DIR}/cm_set_rpath_pre-${CONFIG}.cmake "set(RPATH)\n")
55+
file(GENERATE OUTPUT ${CMAKE_BINARY_DIR}/cm_set_rpath-${CONFIG}.cmake INPUT ${CMAKE_BINARY_DIR}/cm_set_rpath_pre-${CONFIG}.cmake CONDITION $<CONFIG:${CONFIG}>)
5656
endforeach()
57-
function(bcm_add_rpath)
57+
function(cm_add_rpath)
5858
foreach(_RPATH ${ARGN})
5959
foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES} "")
60-
file(APPEND ${CMAKE_BINARY_DIR}/bcm_set_rpath_pre-${CONFIG}.cmake "list(APPEND RPATH \"${_RPATH}\")\n")
60+
file(APPEND ${CMAKE_BINARY_DIR}/cm_set_rpath_pre-${CONFIG}.cmake "list(APPEND RPATH \"${_RPATH}\")\n")
6161
endforeach()
6262
endforeach()
6363
endfunction()
6464
endif()
6565
endif()
6666
# Add library extension to track imported targets
67-
if(NOT COMMAND bcm_add_library_ext)
68-
macro(bcm_add_library_ext LIB)
67+
if(NOT COMMAND cm_add_library_ext)
68+
macro(cm_add_library_ext LIB)
6969
set(ARG_LIST "${ARGN}")
7070
if("IMPORTED" IN_LIST ARG_LIST)
7171
if(CMAKE_FIND_PACKAGE_NAME)
@@ -81,7 +81,7 @@ if(NOT COMMAND bcm_add_library_ext)
8181

8282
macro(add_library)
8383
_add_library(${ARGN})
84-
bcm_add_library_ext(${ARGN})
84+
cm_add_library_ext(${ARGN})
8585
endmacro()
8686

8787
endif()
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
function(cm_ignore_package NAME)
3+
set(${NAME}_DIR ${CMAKE_BINARY_DIR}/_cm_ignore_packages_/${NAME} CACHE PATH "")
4+
file(WRITE ${${NAME}_DIR}/${NAME}Config.cmake "")
5+
endfunction()
6+

0 commit comments

Comments
 (0)