diff options
Diffstat (limited to 'libcppbuild.h')
-rw-r--r-- | libcppbuild.h | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/libcppbuild.h b/libcppbuild.h deleted file mode 100644 index d0a0080..0000000 --- a/libcppbuild.h +++ /dev/null @@ -1,76 +0,0 @@ -// -*- c++ -*- -#pragma once - -#include <string> -#include <vector> -#include <map> - -enum class TargetType -{ - Auto, // Default - deduce from target name and sources extensions - - Executable, - StaticLibrary, - DynamicLibrary, - Object, -}; - -enum class Language -{ - Auto, // Default - deduce language from source extensions - - C, - Cpp, - Asm, -}; - -enum class OutputSystem -{ - Host, // Output for the target system - Build, // Internal tool during cross-compilation -}; - -struct BuildConfiguration -{ - TargetType type{TargetType::Auto}; - Language language{Language::Auto}; - OutputSystem system{OutputSystem::Host}; - std::string target; - std::vector<std::string> sources; // source list - std::vector<std::string> depends; // internal dependencies - std::vector<std::string> cxxflags; // flags for c++ compiler - std::vector<std::string> cflags; // flags for c compiler - std::vector<std::string> ldflags; // flags for linker - std::vector<std::string> asmflags; // flags for asm translator -}; - -using BuildConfigurations = std::vector<BuildConfiguration>; - -int reg(const char* location, BuildConfigurations (*cb)()); - -// Convenience macro - ugly but keeps things simple(r) -#define CONCAT(a, b) CONCAT_INNER(a, b) -#define CONCAT_INNER(a, b) a ## b -#define UNIQUE_NAME(base) CONCAT(base, __LINE__) -#define REG(cb) namespace { int UNIQUE_NAME(unique) = reg(__FILE__, cb); } - -// Predefined configuration keys -namespace cfg -{ -constexpr auto builddir = "builddir"; - -constexpr auto host_cc = "host-cc"; -constexpr auto host_cxx = "host-cpp"; -constexpr auto host_ar = "host-ar"; -constexpr auto host_ld = "host-ld"; - -constexpr auto build_cc = "build-cc"; -constexpr auto build_cxx = "build-cpp"; -constexpr auto build_ar = "build-ar"; -constexpr auto build_ld = "build-ld"; -} - -const std::map<std::string, std::string>& configuration(); -bool hasConfiguration(const std::string& key); -const std::string& getConfiguration(const std::string& key, - const std::string& defaultValue = {}); |