diff options
Diffstat (limited to 'project/clbuild.sh')
-rwxr-xr-x | project/clbuild.sh | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/project/clbuild.sh b/project/clbuild.sh deleted file mode 100755 index df796ca..0000000 --- a/project/clbuild.sh +++ /dev/null @@ -1,216 +0,0 @@ -#!/bin/sh -# a poor man's universal driver (but stay tuned...) - -error_msg() -{ - echo $@ >&2 -} - -mb_cc= -mb_ar= -mb_source_dir= -mb_project_dir= -mb_sysroot= -version_header= -version_macro= -link_target= - -# one: args -for arg ; do - case "$arg" in - --help) usage - ;; - --cc=*) - mb_cc=${arg#*=} - ;; - --ar=*) - mb_ar=${arg#*=} - ;; - --source-dir=*) - mb_source_dir=${arg#*=} - ;; - --project-dir=*) - mb_project_dir=${arg#*=} - ;; - --sysroot=*) - mb_sysroot=${arg#*=} - ;; - --version-header=*) - version_header=${arg#*=} - ;; - --version-macro=*) - version_macro='-D'${arg#*=}'=\\\"unknown\\\"' - ;; - --link-target=*) - link_target=${arg#*=} - ;; - *) - error_msg ${arg#}: "unsupported config argument." - exit 2 - ;; - esac -done - -if [ -z "$mb_cc" ] || [ -z "$mb_ar" ] \ - || [ -z "$mb_source_dir" ] \ - || [ -z "$mb_project_dir" ]; then - usage -fi - -# two: clean -make -s clean || exit 1 - -# three: init -echo '@echo on' -echo '@dir . > nul' -echo -echo -echo 'REM override variables either here or from the shell' -echo 'set source_dir=%source_dir%' -echo 'set sysroot=%sysroot%' -echo -echo - -# four: build tree -cmd_abort_on_error='@if %errorlevel% neq 0 exit /b %errorlevel%' -sysroot_include_arg='-I%sysroot%/include' - -dirs=`make dirs.tag tree.tag \ - | grep -v 'make\[1\]:' \ - | grep -v 'touch dirs.tag' \ - | grep -v 'touch tree.tag' \ - | sed \ - -e 's/mkdir -p//g' \ - -e 's@/@\\\\@g'` - -for d in build $dirs; do - printf 'if not exist %-20smkdir %s\n' "$d" "$d" -done - -# version.tag -make version.tag > /dev/null - -echo -echo "type nul > build/$version_header" -echo -echo "$cmd_abort_on_error" -echo - -echo -echo "$cmd_abort_on_error" -echo - -# five: compile assembly sources -make shared-objs-asm static-objs-asm \ - | grep -v 'make\[1\]:' \ - | grep -v "$mb_project_dir/sysinfo/host" \ - | grep -v 'touch dirs.tag' \ - | grep -v 'touch host.tag' \ - | grep -v 'touch app.tag' \ - | sed \ - -e 's@'"$mb_cc -c "'@ml64 /nologo @' \ - -e 's@ '"$mb_source_dir"'@ /c %source_dir%@' \ - -e 's@-o @/Fo @g' \ - -e 's@\.s@\.asm@g' \ - -e 's,$,\n\n'"$cmd_abort_on_error"'\n,g' - -# six: compile C sources -make shared-objs static-objs app-objs \ - | grep -v 'make\[1\]:' \ - | grep -v "$mb_project_dir/sysinfo/host" \ - | grep -v 'touch dirs.tag' \ - | grep -v 'touch host.tag' \ - | grep -v 'touch version.tag' \ - | grep -v 'touch app.tag' \ - | sed \ - -e 's@'"$mb_cc -c "'@cl /nologo -c @' \ - -e 's@ '"$mb_source_dir"'@ %source_dir%@' \ - -e 's@-I'"$mb_source_dir"'@-I%source_dir%@g' \ - -e 's@-ffreestanding@/X /GS-@g' \ - -e 's@-o @/Fo:@g' \ - -e 's@-std=c99 @@g' \ - -e 's@-fPIC@@g' \ - -e 's@-fpic@@g' \ - -e 's@-g @/Zi @g' \ - -e 's@-g0 @/Zi @g' \ - -e 's@-g1 @/Zi @g' \ - -e 's@-g2 @/Zi @g' \ - -e 's@-g3 @/Zi @g' \ - -e 's@-O @/O2 @g' \ - -e 's@-Os @/O1 @g' \ - -e 's@-O0 @/Od @g' \ - -e 's@-O1 @/O2 @g' \ - -e 's@-O2 @/O2 @g' \ - -e 's@-O3 @/O2 @g' \ - -e 's@-Wall @/Wall @g' \ - -e 's@-Werror @/WX @g' \ - -e 's@-Wextra @@g' \ - -e 's@-Wundef @/Wall @g' \ - -e 's@-Wno-missing-field-initializers @ @g' \ - -e 's@-Wno-unused-parameter @/wd4100 @g' \ - -e 's@-mno-stack-arg-probe @/Gs65536 @g' \ - -e 's@'"$mb_sysroot "'@ @' \ - -e 's,$, '"$version_macro"' -I%sysroot%/include\n\n'"$cmd_abort_on_error"'\n,g' - -echo -echo '@echo.' -echo '@echo clbuild: successfully built: shared-objs static-objs app-objs.' -echo '@echo.' -echo - -# seven: create static archive -make static \ - | grep -v 'make\[1\]:' \ - | grep -v "rm -f " \ - | sed \ - -e 's@'"$mb_ar"' rcs @lib /out:@' \ - -e 's,$, /nologo\n,g' - -echo -echo "$cmd_abort_on_error" -echo - -echo -echo '@echo.' -echo '@echo clbuild: successfully created: static archive.' -echo '@echo.' -echo - -# eight: link -make LDFLAGS_IMPLIB= LDFLAGS_SONAME= $link_target \ - | grep -v 'make\[1\]:' \ - | grep -v 'rm -f app\.tag' \ - | sed \ - -e 's@'"$mb_cc"' -shared @link /dll /nologo @' \ - -e 's@'"$mb_cc"' -static @link /nologo @' \ - -e 's@'"$mb_cc"' @link /nologo @' \ - -e 's@-o @/out:@g' \ - -e 's@ -L@ /libpath:@g' \ - -e 's,-static -l\([^ ]\+\), %sysroot%/lib/lib\1.a,g' \ - -e 's, -l\([^ ]\+\), %sysroot%/lib/lib\1.lib,g' \ - -e 's@-nostdlib @/nodefaultlib @g' \ - -e 's@-Wl,--subsystem=@/subsystem:@g' \ - -e 's@-Wl,--entry -Wl,'"''"'@/entry:@g' \ - -e 's@-Wl,--entry -Wl,@/entry:@g' \ - -e 's@-Wl,--no-undefined@@g' \ - -e 's@-Wl,--exclude-all-symbols@@g' \ - -e 's@'"$mb_sysroot "'@ @' \ - -echo -echo "$cmd_abort_on_error" -echo - -echo -echo '@echo.' -echo '@echo clbuild: successfully linked: shared library.' -echo '@echo.' -echo - -echo -echo '@echo.' -echo '@echo yay.' -echo '@echo.' -echo - -# all done -exit 0 |