summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2018-12-01 02:33:16 -0800
committerJoshua Haberman <jhaberman@gmail.com>2018-12-01 02:33:16 -0800
commit35fa3df8ecc3f451af0512e70a03f89ee407c85c (patch)
tree0ab0029b3080a4378cf1fb4dd026284c72082f7c /tools
parent9e44a757edb7ba7155469d3305da32b3dc11c756 (diff)
Fixes for macOS build. Also run tests in CMake test.
Diffstat (limited to 'tools')
-rwxr-xr-xtools/make_cmakelists.py30
1 files changed, 18 insertions, 12 deletions
diff --git a/tools/make_cmakelists.py b/tools/make_cmakelists.py
index d7996d8..b8f46b9 100755
--- a/tools/make_cmakelists.py
+++ b/tools/make_cmakelists.py
@@ -22,11 +22,12 @@ class BuildFileFunctions(object):
def __init__(self, converter):
self.converter = converter
- def _add_deps(self, kwargs):
+ def _add_deps(self, kwargs, keyword=""):
if "deps" not in kwargs:
return
- self.converter.toplevel += "target_link_libraries(%s\n %s)\n" % (
+ self.converter.toplevel += "target_link_libraries(%s%s\n %s)\n" % (
kwargs["name"],
+ keyword,
"\n ".join(StripColons(kwargs["deps"]))
)
@@ -37,17 +38,22 @@ class BuildFileFunctions(object):
if kwargs["name"] == "amalgamation" or kwargs["name"] == "upbc_generator":
return
files = kwargs.get("srcs", []) + kwargs.get("hdrs", [])
- self.converter.toplevel += "add_library(%s\n %s)\n" % (
- kwargs["name"],
- "\n ".join(files)
- )
- self._add_deps(kwargs)
- # CMake wants to know if each library is C or C++.
- # If there are only .h files, it can't infer. Assume C++.
- if not filter(IsSourceFile, files):
- line = "set_target_properties(%s PROPERTIES LINKER_LANGUAGE CXX)\n"
- self.converter.toplevel += line % (kwargs["name"])
+ if filter(IsSourceFile, files):
+ # Has sources, make this a normal library.
+ self.converter.toplevel += "add_library(%s\n %s)\n" % (
+ kwargs["name"],
+ "\n ".join(files)
+ )
+ self._add_deps(kwargs)
+ else:
+ # Header-only library, have to do a couple things differently.
+ # For some info, see:
+ # http://mariobadr.com/creating-a-header-only-library-with-cmake.html
+ self.converter.toplevel += "add_library(%s INTERFACE)\n" % (
+ kwargs["name"]
+ )
+ self._add_deps(kwargs, " INTERFACE")
def cc_binary(self, **kwargs):
pass
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback