fmake

make any project just by typing `fmake`

commit c7a6f92d6155cb29cac14260bd9b69baafe8f505
parent 356ae291822d8d03dce901528b13059dbf8debdb
Author: Bharatvaj Hemanth <bharatvaj@getsh.org>
Date: Sat, 26 Nov 2022 03:03:15 +0530

Fix contents of README and rm list.txt

Add support for gradle builds
3 files changed, 25 insertions(+), 40 deletions(-)
M
README
|
25
+++++++++++--------------
M
config.h
|
23
++++++++++++++---------
D
list.txt
|
17
-----------------
diff --git a/README b/README
@@ -7,22 +7,10 @@ fmake is a program that brings `make`s interface to almost any build system.
 
 See this |list.txt| for the number of build systems available.
 
+fmake refrains from reading the source files
 
-fmake refrains from reading the source files, but does so when required like reading a version number or detecting a syntax.
-
-Every build system has ranking that is followed so that 
-autotools - 1
-cmake - 1
-make - 2 
-
-
-fmake "intelligently" knows what targets to build
-
-mapper files
-------------
-
-`fmake` has the analogy of mapper files which can be used to make a project.
 
+fmake "intelligently" knows what targets to build.
 These can be configured in the config.h file.
 
 USAGE

@@ -33,3 +21,12 @@ To avoid complexity, fmake does not fork any process to run the commands. It jus
 `make='$(fmake)'` This should be added in your .bash_profile, .zshrc for fmake to work.
 
 When none is found, it just defaults to the `make` in $PATH
+
+Supported build files
+---------------------
+* *make
+* bazel
+* cmake
+* configure
+* gradle
+* Much more to be added soon
diff --git a/config.h b/config.h
@@ -9,6 +9,7 @@ typedef enum {
 	FMAKE_CMAKE,
 	FMAKE_NPM,
 	FMAKE_RUST,
+	FMAKE_GRADLE,
 	FMAKE_PIP,
 } maker_t;
 

@@ -23,15 +24,19 @@ typedef struct {
 	ARG, cmdlists[ARG]
 
 static const maker_config_t makers[] = {
-	{ "configure",      FMAKE_CMAKE,          "sh",    "configure"   },
-	{ "Makefile",       FMAKE_POSIX_MAKEFILE, "make",  ""            },
-	{ "makefile",       FMAKE_POSIX_MAKEFILE, "make",  ""            },
-	{ "GNUMakefile",    FMAKE_GNU_MAKEFILE,   "gmake", ""            },
-	{ "BSDMakefile",    FMAKE_BSD_MAKEFILE,   "bmake", ""            },
-	{ "CMakeLists.txt", FMAKE_CMAKE,          "cmake", "-B out/"     },
-	{ "package.json",   FMAKE_NPM,          "npm",   "install"     },
-	{ "Cargo.toml",     FMAKE_RUST,          "cargo", "install"     },
-	{ "setup.py",       FMAKE_PIP,          "pip",   "install ."   },
+{ "configure",      FMAKE_CMAKE,          "sh",            "configure"   },
+{ "Makefile",       FMAKE_POSIX_MAKEFILE, "make",          ""            },
+{ "makefile",       FMAKE_POSIX_MAKEFILE, "make",          ""            },
+{ "GNUMakefile",    FMAKE_GNU_MAKEFILE,   "gmake",         ""            },
+{ "BSDMakefile",    FMAKE_BSD_MAKEFILE,   "bmake",         ""            },
+{ "CMakeLists.txt", FMAKE_CMAKE,          "cmake",         "-B out/"     },
+{ "package.json",   FMAKE_NPM,            "npm",           "install"     },
+{ "Cargo.toml",     FMAKE_RUST,           "cargo",         "install"     },
+{ "setup.py",       FMAKE_PIP,            "pip",           "install ."   },
+#ifdef _WIN32
+{ "gradlew.bat",    FMAKE_GRADLE,         "./gradlew.bat", ""            },
+#endif
+{ "gradlew",        FMAKE_GRADLE,         "sh",            "gradlew"     },
 };
 
 static int8_t *detected_indices = 0;
diff --git a/list.txt b/list.txt
@@ -1,17 +0,0 @@
-Supported build files
----------------------
-
-* .sln
-* .xcrun
-
-* cmake
-
-* gmake
-* bmake
-* nmake
-
-* bazel
-* gradle
-* meson
-
-* autotools