summaryrefslogtreecommitdiff
path: root/infrastructure/cmake/CMakeLists.txt
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2016-08-30 22:44:36 +0100
committerChris Wilson <chris+github@qwirx.com>2016-08-28 21:47:18 +0100
commit0ebfa6464b9987b5bd2a084872f7511625647391 (patch)
tree8d6abc564823f68d2efe3f3f37383ab15543c4d4 /infrastructure/cmake/CMakeLists.txt
parentbaf19fe9e7dd689597b3320202efeb69c61838a8 (diff)
Merge makebuildenv.pl and makeparcels.pl, write monolithic Makefiles.
This is necessary to fix compilation on machines with large numbers of cores (e.g. Travis build workers) because the build system automatically attempts maximum parallelism, and the old one is broken and tries to build multiple libraries simultaneously. The new buildsystem almost entirely avoids recursive Make: only trivial Makefiles in target directories (which invoke the top-level Makefile to build the appropriate output file) and the old docs makefile are not part of the new master Makefile. Due to higher parallelism and better dependency checking, Make should be much faster now. Not all old targets are supported though. I've removed implicit dependencies hard-coded in the build system, and expressed all dependencies in modules.txt, since the implicit dependencies were confusing, obscure and unnecessary, and it was hard to express their own dependencies on each other. Test both the default target and explicitly "parcels" for release builds on Travis.
Diffstat (limited to 'infrastructure/cmake/CMakeLists.txt')
-rw-r--r--infrastructure/cmake/CMakeLists.txt14
1 files changed, 1 insertions, 13 deletions
diff --git a/infrastructure/cmake/CMakeLists.txt b/infrastructure/cmake/CMakeLists.txt
index a9bd549f..1d28b313 100644
--- a/infrastructure/cmake/CMakeLists.txt
+++ b/infrastructure/cmake/CMakeLists.txt
@@ -31,7 +31,6 @@ set(files_to_configure
contrib/windows/installer/boxbackup.mpi
infrastructure/BoxPlatform.pm
infrastructure/makebuildenv.pl
- infrastructure/makeparcels.pl
infrastructure/makedistribution.pl
lib/bbackupquery/makedocumentation.pl
lib/common/BoxPortsAndFiles.h
@@ -148,12 +147,7 @@ foreach(documentation_file ${documentation_files})
endforeach()
file(STRINGS ${base_dir}/modules.txt module_deps REGEX "^[^#]")
-# qdbm, lib/common and lib/win32 aren't listed in modules.txt, so hard-code them.
-foreach(module_dep
- "qdbm"
- "lib/win32"
- "lib/common qdbm lib/win32"
- ${module_deps})
+foreach(module_dep ${module_deps})
string(REGEX MATCH "([^ ]+)[ ]*(.*)" valid_module_line ${module_dep})
if(valid_module_line)
@@ -169,12 +163,6 @@ foreach(module_dep
${module_path}/*.h)
set(module_files ${module_files} ${${module_name}_extra_files})
- # everything except qdbm, lib/common and lib/win32 implicitly depend on
- # lib/common, so express that dependency here.
- if(module_name MATCHES "^(qdbm|lib_(common|win32))$")
- else()
- set(dependencies "${dependencies} lib_common")
- endif()
string(REGEX REPLACE "^ " "" dependencies "${dependencies}")
string(REGEX REPLACE " $" "" dependencies "${dependencies}")