wrote usage function and set sensible defaults
This commit is contained in:
		
							parent
							
								
									bbf8c84ba8
								
							
						
					
					
						commit
						c29f47851f
					
				
					 1 changed files with 39 additions and 2 deletions
				
			
		
							
								
								
									
										41
									
								
								cbuild.sh
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								cbuild.sh
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -6,10 +6,10 @@
 | 
			
		|||
 | 
			
		||||
# --- USER CONFIG ---
 | 
			
		||||
CC="gcc"
 | 
			
		||||
CFLAGS="-Wall -Wpedantic -std=c99"
 | 
			
		||||
CFLAGS="-Wall -Wpedantic"
 | 
			
		||||
LDFLAGS=""
 | 
			
		||||
LDLIBS=""
 | 
			
		||||
TARGET="foo"
 | 
			
		||||
TARGET="a.out"
 | 
			
		||||
SRCDIR="src"
 | 
			
		||||
OBJDIR="obj"
 | 
			
		||||
MAKEFILE=".makefile"
 | 
			
		||||
| 
						 | 
				
			
			@ -24,6 +24,41 @@ OBJ="$(find ${SRCDIR} -name '*\.c' |
 | 
			
		|||
 | 
			
		||||
srcnum="$(find ${SRCDIR} -name '*\.c' -exec printf %c {} + | wc -c)"
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    cat <<EOF
 | 
			
		||||
cbuild.sh: A simple, customizable, automated, and portable build script for C
 | 
			
		||||
projects. This script works by automatically detecting .c source files in
 | 
			
		||||
SRCDIR, generating a makefile, compiling them into objects in OBJDIR, and
 | 
			
		||||
finally linking them to TARGET.
 | 
			
		||||
 | 
			
		||||
Customization:
 | 
			
		||||
    Open cbuild.sh in your editor and navigate to the USER CONFIG section (at
 | 
			
		||||
    the top of the file).
 | 
			
		||||
 | 
			
		||||
    CC        the compiler to use   (default: gcc)
 | 
			
		||||
    CFLAGS    compilation flags     (default: -Wall -Wpedantic)
 | 
			
		||||
    LDFLAGS   linker flags          (default: none)
 | 
			
		||||
    LDLIBS    linker libraries      (default: none)
 | 
			
		||||
    TARGET    final target to link  (default: a.out)
 | 
			
		||||
    SRCDIR    the directory where the script will search for .c source files
 | 
			
		||||
              (default: src)
 | 
			
		||||
    OBJDIR    the directory where compiled objects will be placed. (default: obj)
 | 
			
		||||
    MAKEFILE  the filename of the generated makefile (default: .makefile)
 | 
			
		||||
 | 
			
		||||
Usage:
 | 
			
		||||
    ./cbuild.sh [COMMAND]
 | 
			
		||||
    
 | 
			
		||||
    COMMAND:
 | 
			
		||||
    build     generate the makefile, compile objects and link target.
 | 
			
		||||
    clean     remove makefile, objects, and target.
 | 
			
		||||
    buildcn   clean, and then build.
 | 
			
		||||
    generate  ONLY generate the makefile.
 | 
			
		||||
    run       build, then execute TARGET.
 | 
			
		||||
    dryrun    print all commands that will be executed during the build process
 | 
			
		||||
              to stdout.
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export_vars() {
 | 
			
		||||
    export CC
 | 
			
		||||
    export CFLAGS
 | 
			
		||||
| 
						 | 
				
			
			@ -121,6 +156,7 @@ __progress__() {
 | 
			
		|||
 | 
			
		||||
    echo "${2}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
case $1 in
 | 
			
		||||
    build) build;;
 | 
			
		||||
    clean) clean;;
 | 
			
		||||
| 
						 | 
				
			
			@ -129,4 +165,5 @@ case $1 in
 | 
			
		|||
    run) run;;
 | 
			
		||||
    dryrun) dry_run;;
 | 
			
		||||
    __progress__) __progress__ "${2}" "${3}";;
 | 
			
		||||
    *) usage;;
 | 
			
		||||
esac
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue