DEADSOFTWARE

Kernel: fix kernels compilation and processor types
[cpc.git] / make.sh
diff --git a/make.sh b/make.sh
index 2b505534d7e5b7394a67b66bc31f8fe516daea6d..f7dab7da7822f842c5088647d1f7a00c78d487f9 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -1,13 +1,17 @@
-#! /bin/sh
+#! /bin/bash
 
 set -e
 
+abspath() {
+  [[ "$1" == /* ]] && echo "$1" || echo "$(pwd)/$1"
+}
+
 ###^^^^^^^^^^^^^^^^^^###
 ### Global variables ###
 ###__________________###
 
 _exec="make.sh"
-_this="$(dirname "$(readlink -f "$0")")"
+_this="$(dirname "$(abspath "$0")")"
 _cpu=
 _target=
 _system=
@@ -37,12 +41,14 @@ usage() {
   echo "Processors:"
   echo "    486               Intel 486+"
   echo "    arm               ARM 32-bit"
+  echo "    powerpc           PowerPC 32-bit"
   echo "Targets:"
   echo "    native            Native"
   echo "    cpfront           Generic C"
   echo "Operation systems:"
   echo "    linux             GNU/Linux"
   echo "    cygwin            Cygwin"
+  echo "    osx               Mac OS X"
   echo "Environment variables:"
   echo "    CC                C compiler binary"
   echo "    CFLAGS            C compiler options"
@@ -60,7 +66,7 @@ copy_source() {
   for _src
   do
     if test -d "$_this/src/$_src"; then
-      find "$_this/src/$_src" -mindepth 1 -maxdepth 1 -exec cp -rt "$_out" -- {} +
+      find "$_this/src/$_src" -mindepth 1 -maxdepth 1 -exec cp -r {} "$_out" \;
     fi
   done
 }
@@ -76,6 +82,8 @@ native_link() {
     if [ "$_system" = "cygwin" ]; then
       _outexe="${_outexe}.exe"
       _outsystem="win32"
+    elif [ "$_system" = "osx" ]; then
+      _outexe="${_outexe}.out"
     fi
     shift
     "$_linker" $CPLFALGS -os "$_outsystem" -kernel Kernel -main Kernel -legacycodedir . -o "$_outexe" "$@"
@@ -124,20 +132,31 @@ cpfront_link() {
     local _cc_cflags=
     case "$CC" in
       *gcc)  _cc_cflags="-std=c89 -Wno-int-conversion -Wno-int-to-pointer-cast -Wno-incompatible-pointer-types -Wno-implicit-function-declaration" ;;
+      *gcc-4.2)  _cc_cflags="-std=c89 -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast -Wno-implicit-function-declaration" ;;
+      clang|clang-*)  _cc_cflags="-std=c89 -Wno-int-conversion -Wno-incompatible-pointer-types -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses -Wno-pointer-sign -Wno-unused-value -Wno-return-type" ;;
+      *tcc)  _cc_cflags="-std=c89 -w -fsigned-char" ;;
       *)  _cc_cflags="" ;;
     esac
     local _cpu_cflags=
     case "$_cpu" in
       486)  _cpu_cflags="-m32" ;;
       arm)  _cpu_cflags="" ;;
+      powerpc)  _cpu_cflags="-m32" ;;
       *)  error "cpfront_link(): unsupported cpu $_cpu" ;;
     esac
     local _system_cflags=
     case "$_system" in
       cygwin)  _system_cflags="-liconv" ;;
+      osx)  _system_cflags="-D_DARWIN_C_SOURCE -liconv" ;;
       *)  _system_cflags="" ;;
     esac
-    "$CC" -g -D_XOPEN_SOURCE=700 $_cc_cflags $_cpu_cflags $CFLAGS -o "${_main}" -I "$_this/C" "$_this/C/SYSTEM.c" $_list -lm -ldl -lffi $_system_cflags
+    local _out_exe="${_main}"
+    case "$_system" in
+      cygwin)  _out_exe="${_main}.exe" ;;
+      osx)  _out_exe="${_main}.out" ;;
+      *) ;;
+    esac
+    "$CC" -g -D_XOPEN_SOURCE=700 $_cc_cflags $_cpu_cflags $CFLAGS -o "${_out_exe}" -I "$_this/C" "$_this/C/SYSTEM.c" $_list -lm -ldl -lffi $_system_cflags
   fi
 }
 
@@ -170,7 +189,7 @@ compile_all() {
       Posix/Mod/Csys_stat.cp Posix/Mod/Cfcntl.cp Posix/Mod/Cerrno.cp \
       Posix/Mod/Ciconv.cp Posix/Mod/Cwctype.cp Posix/Mod/Csys_mman.cp \
       Posix/Mod/Cdlfcn.cp Posix/Mod/Csignal.cp Posix/Mod/Csetjmp.cp \
-      Posix/Mod/Clibgen.cp \
+      Posix/Mod/Clibgen.cp Posix/Mod/Csys_wait.cp \
       Posix/Mod/Cmacro.cp
     if [ "$_target" = "cpfront" ]; then
       compile Lib/Mod/FFI.cp
@@ -208,9 +227,9 @@ compile_all() {
   ### Compile Dev subsystem ###
   ###_______________________###
 
-  compile Dev/Mod/CPM.cp Dev/Mod/CPT.odc Dev/Mod/CPS.odc Dev/Mod/CPB.odc \
-    Dev/Mod/CPP.odc Dev/Mod/CPE.odc Dev/Mod/CPH.odc Dev/Mod/CPL486.odc \
-    Dev/Mod/CPC486.odc Dev/Mod/CPV486.odc
+  compile Dev/Mod/CPM.cp Dev/Mod/CPT.odc Dev/Mod/CPR.cp Dev/Mod/CPS.odc \
+    Dev/Mod/CPB.odc Dev/Mod/CPP.odc Dev/Mod/CPE.odc Dev/Mod/CPH.odc \
+    Dev/Mod/CPL486.odc Dev/Mod/CPC486.odc Dev/Mod/CPV486.odc
 
   ###^^^^^^^^^^^^^^^^^^^^^^^^###
   ### Compile Dev2 subsystem ###
@@ -233,8 +252,19 @@ compile_all() {
   if [ "$_target" = "native" ]; then
     compile Dsw/Mod/Debug.odc
   fi
-  compile Dsw/Mod/Documents.cp Dsw/Mod/Log.odc Dsw/Mod/Compiler486Main.cp \
-    Dsw/Mod/CompilerCPfrontMain.cp Dsw/Mod/Linker486Main.cp
+
+  compile Dsw/Mod/Documents.cp Dsw/Mod/Log.odc Dsw/Mod/Opts.cp Dsw/Mod/Procs.cp
+  compile Dsw/Mod/HostProcs.cp
+
+  ###^^^^^^^^^^^^^^^^^^^^^^^^^^^###
+  ### Compile bbdsw executables ###
+  ###___________________________###
+
+  compile \
+    Dsw/Mod/Compiler486Main.cp \
+    Dsw/Mod/CompilerCPfrontMain.cp \
+    Dsw/Mod/Linker486Main.cp \
+    Dsw/Mod/MakeMain.cp
 }
 
 link_all() {
@@ -247,7 +277,7 @@ link_all() {
     PosixCtypes PosixCmacro \
     Kernel Console Files Dates Math Strings Services Log \
     HostLang HostConsole HostFiles HostDates DswLog $_debug_module \
-    DevCPM DevCPT DevCPS DevCPB DevCPP DevCPE DevCPH \
+    DevCPM DevCPT DevCPR DevCPS DevCPB DevCPP DevCPE DevCPH \
     DevCPL486 DevCPC486 DevCPV486 \
     DswDocuments DswCompiler486Main
 
@@ -263,10 +293,17 @@ link_all() {
     PosixCtypes PosixCmacro \
     Kernel Console Files Dates Math Strings Services Log \
     HostLang HostConsole HostFiles HostDates DswLog $_debug_module \
-    DevCPM DevCPT DevCPS DevCPB DevCPP DevCPE DevCPH \
+    DevCPM DevCPT DevCPR DevCPS DevCPB DevCPP DevCPE DevCPH \
     CPfrontCPG CPfrontCPC CPfrontCPV\
     DswDocuments DswCompilerCPfrontMain
 
+  link cpmake \
+    PosixCtypes PosixCmacro \
+    Kernel Console Files Dates Math Strings Services Log \
+    HostLang HostConsole HostFiles HostDates DswLog $_debug_module \
+    DevCPM DevCPT DevCPR DevCPS \
+    DswDocuments DswOpts DswProcs DswHostProcs DswMakeMain
+
   if $_dolink; then
     chmod a+x cpc486 cpl486 cpfront
   fi
@@ -308,6 +345,7 @@ fi
 case "$_cpu" in
   386|486|586|686)  _cpu=486 ;;
   arm|armv6|armv7)  _cpu=arm ;;
+  powerpc|ppc|ppc32) _cpu=powerpc ;;
   "")  error "cpu not specified" ;;
   *)  error "unsupported cpu $_cpu" ;;
 esac
@@ -322,6 +360,7 @@ esac
 case "$_system" in
   linux) _useposix=true ;;
   cygwin) _useposix=true ;;
+  osx) _useposix=true ;;
   "") error "operation system not specified" ;;
   *) error "unsuported operation system $_system" ;;
 esac
@@ -381,7 +420,7 @@ if $_docompile; then
 fi
 
 mkdir -p -- "$_out"
-_out="$(readlink -f "$_out")"
+_out="$(abspath "$_out")"
 copy_source "generic" "$_cpu"
 if $_useposix; then
   copy_source "posix/generic" "posix/$_cpu"