updates from orpheus for windoze build
[feisty_meow.git] / scripts / generator / produce_feisty_meow.sh
index cd5ed651fa89af1d20987eda530741c467850f9e..007bee3f0075b8996c37b9b20a7a0f3f85733c6e 100644 (file)
@@ -30,15 +30,16 @@ export PATH=/bin:$PATH
 export INCLUDED_FROM_BOOTSTRAP=true
 
 # pull in our build variables using the path to this script.
 export INCLUDED_FROM_BOOTSTRAP=true
 
 # pull in our build variables using the path to this script.
-export BUILD_SCRIPTS_DIR="$( \cd "$(\dirname "$0")" && /bin/pwd )"
-#echo build scripts dir initial value: $BUILD_SCRIPTS_DIR
-BUILD_SCRIPTS_DIR="$(echo $BUILD_SCRIPTS_DIR | tr '\\\\' '/' )"
-#echo build scripts dir after chewing: $BUILD_SCRIPTS_DIR
+export BUILD_SCRIPTS_PATH="$( \cd "$(\dirname "$0")" && /bin/pwd )"
+#echo build scripts dir initial value: $BUILD_SCRIPTS_PATH
+BUILD_SCRIPTS_PATH="$(echo $BUILD_SCRIPTS_PATH | tr '\\\\' '/' )"
+#hmmm: why four backslashes above?  trying two in our unix virtual root code below.
+#echo build scripts dir after chewing: $BUILD_SCRIPTS_PATH
 
 # load in feisty meow basic scripts, if not already loaded.
 if [ -z "$FEISTY_MEOW_SCRIPTS_LOADED" ]; then
 
 # load in feisty meow basic scripts, if not already loaded.
 if [ -z "$FEISTY_MEOW_SCRIPTS_LOADED" ]; then
-  bash "$BUILD_SCRIPTS_DIR/../core/reconfigure_feisty_meow.sh"
-  source "$BUILD_SCRIPTS_DIR/../core/launch_feisty_meow.sh"
+  bash "$BUILD_SCRIPTS_PATH/../core/reconfigure_feisty_meow.sh"
+  source "$BUILD_SCRIPTS_PATH/../core/launch_feisty_meow.sh"
 fi
 
 source "$FEISTY_MEOW_SCRIPTS/core/functions.sh"
 fi
 
 source "$FEISTY_MEOW_SCRIPTS/core/functions.sh"
@@ -48,24 +49,91 @@ source "$FEISTY_MEOW_SCRIPTS/core/functions.sh"
 export FEISTY_MEOW_APEX="$(unix_to_dos_path $FEISTY_MEOW_APEX)"
 
 # load in build variables based on our deduced paths.
 export FEISTY_MEOW_APEX="$(unix_to_dos_path $FEISTY_MEOW_APEX)"
 
 # load in build variables based on our deduced paths.
-source "$BUILD_SCRIPTS_DIR/build_variables.sh" "$BUILD_SCRIPTS_DIR/build_variables.sh"
+source "$BUILD_SCRIPTS_PATH/build_variables.sh" "$BUILD_SCRIPTS_PATH/build_variables.sh"
 
 ##############
 
 # creates the directory for our binaries and gives it a reasonable paths configuration.
 
 ##############
 
 # creates the directory for our binaries and gives it a reasonable paths configuration.
-function prepare_binaries_dir()
+function prepare_clam_binaries_dir()
 {
   # we'll store binaries here from the bootstrap process.
 {
   # we'll store binaries here from the bootstrap process.
-  if [ ! -d "$CLAM_BINARY_DIR" ]; then
-    echo "creating binary dir now in $CLAM_BINARY_DIR"
-    mkdir -p "$CLAM_BINARY_DIR"
+  if [ ! -d "$CLAM_BINARIES" ]; then
+    echo "creating clam binary dir now in $CLAM_BINARIES"
+    mkdir -p "$CLAM_BINARIES"
+    exit_on_error "creating clam binary directory in $CLAM_BINARIES"
   fi
   fi
-  if [ ! -f "$CLAM_BINARY_DIR/paths.ini" ]; then
-    echo "copied paths.ini to binary dir."
-    cp "$PRODUCTION_DIR/paths.ini" "$CLAM_BINARY_DIR"
+  if [ ! -f "$CLAM_BINARIES/paths.ini" ]; then
+    cp "$PRODUCTION_STORE/paths.ini" "$CLAM_BINARIES"
+    exit_on_error "copying paths.ini to $CLAM_BINARIES"
+    echo "copied paths.ini to clam binary dir."
   fi
 }
 
   fi
 }
 
+# fix the system helper header up by calling cygpath to determine the cygwin
+# root, if we are on windoze and cygwin.
+function update_system_helper_header()
+{
+  # create our main binaries directory if needed.
+  if [ ! -d "$FEISTY_MEOW_BINARIES" ]; then
+    echo "creating feisty meow binary folder now in $FEISTY_MEOW_BINARIES"
+    mkdir -p "$FEISTY_MEOW_BINARIES"
+    exit_on_error "creating feisty meow binary folder in $FEISTY_MEOW_BINARIES"
+  fi
+
+  # copy up the system helper template version into the binaries directory.
+  if [ ! -f "$FEISTY_MEOW_BINARIES/system_helper.h" ]; then
+    cp "$PRODUCTION_STORE/system_helper_template.h" "$FEISTY_MEOW_BINARIES/system_helper.h"
+    exit_on_error "creating system_helper header in $FEISTY_MEOW_BINARIES"
+    echo "copied system_helper header to feisty meow binary dir."
+  fi
+
+  # set the cygwin root path if we're on cygwin.
+  whichable cygpath
+  if [ $? -eq 0 ]; then
+    # found cygpath, so run it now to get the dossy path of the root ('/' folder).
+    found_root="$(cygpath -w -m /)"
+    if [ $? -ne 0 ]; then
+      echo "Failure to find virtual Unix root folder with cygpath."
+      exit 1322
+    fi
+echo "found root as '$found_root'"
+    # translate any backslashes to forward thinking slashes.    
+    found_root="$(echo $found_root | tr '\\' '/')"
+echo "processed root is now: '$found_root'"
+    # edit the entry in place to correct the default path.
+    sed -i \
+        -e "s% *#define FEISTY_MEOW_VIRTUAL_UNIX_ROOT \".*$%#define FEISTY_MEOW_VIRTUAL_UNIX_ROOT \"$found_root\"%" \
+        "$CLAM_BINARIES/paths.ini" 
+    exit_on_error "updating system_helper header in $FEISTY_MEOW_BINARIES"
+echo "system helper file now has:"
+cat "$FEISTY_MEOW_BINARIES/system_helper.h"
+  fi
+}
+
+function make_code {
+  make $* $BE_NOISY ${BUILD_DEFAULTS[@]}
+  if [ $? != 0 ]; then
+    echo "Failed to make on: $*"
+    exit 2323
+  fi
+}
+
+# removes pcdos eol from any scripts.  that assumes that the bootstrap script
+# itself isn't polluted with them.
+function strip_cr {
+  ctrl_m=$'\015'
+  for i in $*; do
+    tempgrep="$(mktemp "$TEMPORARIES_PILE/tempgrep.XXXXXX")"
+    grep -l "$ctrl_m" "$i" >$tempgrep
+    if [ ! -z "$(cat $tempgrep)" ]; then
+      temp="$(mktemp "$TEMPORARIES_PILE/tempsed.XXXXXX")"
+      sed -e "s/$ctrl_m$//" <$i >$temp
+      mv -f $temp $i
+    fi
+    rm "$tempgrep"
+  done
+}
+
 ##############
 
 # turn off sounds to avoid running the sound player that's not been built yet.
 ##############
 
 # turn off sounds to avoid running the sound player that's not been built yet.
@@ -78,9 +146,6 @@ echo "Build bootstrap process has started."
 
 # preconditions for the build process...
 
 
 # preconditions for the build process...
 
-# set up our output directories etc.
-prepare_binaries_dir
-
 # set a flag for this process so we can omit certain compilations as necessary.
 export BOOT_STRAPPING=true
 
 # set a flag for this process so we can omit certain compilations as necessary.
 export BOOT_STRAPPING=true
 
@@ -94,35 +159,11 @@ export BOOT_STRAPPING=true
 declare -a BUILD_DEFAULTS=( "BOOT_STRAPPING=t" "OPTIMIZE=t" "REBUILD=t" "DEBUG=" )
   # bootstrapping is always turned on for this particular script.
   # we also always optimize these builds and turn off the debug flag.
 declare -a BUILD_DEFAULTS=( "BOOT_STRAPPING=t" "OPTIMIZE=t" "REBUILD=t" "DEBUG=" )
   # bootstrapping is always turned on for this particular script.
   # we also always optimize these builds and turn off the debug flag.
-  # rebuild ensures that the new apps are made fresh: "REBUILD=t"
+  # rebuild ensures that the new applications are made fresh: "REBUILD=t"
   #   it can be turned off when the build bootstrapper is being tested.
   # noisy can be added to spew lots of text: "NOISY=t"
   #   this can help with compilation issues by showing all the flags.
 
   #   it can be turned off when the build bootstrapper is being tested.
   # noisy can be added to spew lots of text: "NOISY=t"
   #   this can help with compilation issues by showing all the flags.
 
-function make_code {
-  make $* $BE_NOISY ${BUILD_DEFAULTS[@]}
-  if [ $? != 0 ]; then
-    echo "Failed to make on: $*"
-    exit 2323
-  fi
-}
-
-# removes pcdos eol from any scripts.  that assumes that the bootstrap script
-# itself isn't polluted with them.
-function strip_cr {
-  ctrl_m=$'\015'
-  for i in $*; do
-    tempgrep="$(mktemp "$TEMPORARIES_DIR/tempgrep.XXXXXX")"
-    grep -l "$ctrl_m" "$i" >$tempgrep
-    if [ ! -z "$(cat $tempgrep)" ]; then
-      temp="$(mktemp "$TEMPORARIES_DIR/tempsed.XXXXXX")"
-      sed -e "s/$ctrl_m$//" <$i >$temp
-      mv -f $temp $i
-    fi
-    rm "$tempgrep"
-  done
-}
-
 # the promote function moves a file from the exe directory into the build's
 # bin directory.  it performs the copy step and makes the file executable.
 # the original name should just be the root of the filename without any
 # the promote function moves a file from the exe directory into the build's
 # bin directory.  it performs the copy step and makes the file executable.
 # the original name should just be the root of the filename without any
@@ -130,26 +171,26 @@ function strip_cr {
 # NOTE: this depends on the operating system having been chosen above!
 if [ "$OPERATING_SYSTEM" = "UNIX" ]; then
   function promote {
 # NOTE: this depends on the operating system having been chosen above!
 if [ "$OPERATING_SYSTEM" = "UNIX" ]; then
   function promote {
-    prepare_binaries_dir
+    prepare_clam_binaries_dir
 
 
-    if [ ! -f "$INTERMEDIATE_EXE_DIR/$1" ]; then
+    if [ ! -f "$INTERMEDIATE_STORE/$1" ]; then
       echo "Failed to build the application $1--quitting now."
       exit 1892
     fi
       echo "Failed to build the application $1--quitting now."
       exit 1892
     fi
-    cp "$INTERMEDIATE_EXE_DIR/$1" "$CLAM_BINARY_DIR/$1"
-    strip "$CLAM_BINARY_DIR/$1"
-    chmod 755 "$CLAM_BINARY_DIR/$1"
+    cp "$INTERMEDIATE_STORE/$1" "$CLAM_BINARIES/$1"
+    strip "$CLAM_BINARIES/$1"
+    chmod 755 "$CLAM_BINARIES/$1"
   }
 elif [ "$OPERATING_SYSTEM" = "WIN32" ]; then
   function promote {
   }
 elif [ "$OPERATING_SYSTEM" = "WIN32" ]; then
   function promote {
-    prepare_binaries_dir
+    prepare_clam_binaries_dir
 
 
-    if [ ! -f "$INTERMEDIATE_EXE_DIR/$1.exe" ]; then
+    if [ ! -f "$INTERMEDIATE_STORE/$1.exe" ]; then
       echo "Failed to build the application $1.exe--quitting now."
       exit 1892
     fi
       echo "Failed to build the application $1.exe--quitting now."
       exit 1892
     fi
-    cp "$INTERMEDIATE_EXE_DIR/$1.exe" "$CLAM_BINARY_DIR"
-    chmod 755 "$CLAM_BINARY_DIR/$1.exe"
+    cp "$INTERMEDIATE_STORE/$1.exe" "$CLAM_BINARIES"
+    chmod 755 "$CLAM_BINARIES/$1.exe"
   }
 else
   echo "The OPERATING_SYSTEM variable is unset or unknown.  Bailing out."
   }
 else
   echo "The OPERATING_SYSTEM variable is unset or unknown.  Bailing out."
@@ -161,37 +202,37 @@ fi
 # start the actual build process now...
 
 # load in the feisty meow building environment.
 # start the actual build process now...
 
 # load in the feisty meow building environment.
-source "$BUILD_SCRIPTS_DIR/build_variables.sh" "$BUILD_SCRIPTS_DIR/build_variables.sh"
+source "$BUILD_SCRIPTS_PATH/build_variables.sh" "$BUILD_SCRIPTS_PATH/build_variables.sh"
 
 # clean out any current contents.
 
 # clean out any current contents.
-bash "$BUILD_SCRIPTS_DIR/whack_build.sh" clean
+bash "$BUILD_SCRIPTS_PATH/whack_build.sh" clean
+
+# set up our output directories etc.
+prepare_clam_binaries_dir
 
 # make this again so no one gets cranky.
 
 # make this again so no one gets cranky.
-mkdir -p "$LOGS_DIR"
+mkdir -p "$FEISTY_MEOW_LOGS"
 
 toolset_names=(makedep value_tagger version_stamper vsts_version_fixer write_build_config short_path sleep_ms zap_process playsound create_guid)
 
 if [ -z "$SAVE_BINARIES" ]; then
   for i in ${toolset_names[*]}; do
 
 toolset_names=(makedep value_tagger version_stamper vsts_version_fixer write_build_config short_path sleep_ms zap_process playsound create_guid)
 
 if [ -z "$SAVE_BINARIES" ]; then
   for i in ${toolset_names[*]}; do
-    whack_name="$CLAM_BINARY_DIR/$i$EXE_ENDING"
+    whack_name="$CLAM_BINARIES/$i$EXE_ENDING"
 #echo removing "$whack_name"
     rm -f "$whack_name"
   done
 fi
 
 #echo removing "$whack_name"
     rm -f "$whack_name"
   done
 fi
 
-# make the clam shell scripts executable.
-chmod 755 "$CLAM_DIR"/*.sh
-chmod 755 "$CLAM_DIR"/cpp/*.sh
-#chmod 755 "$CLAM_DIR"/csharp/*.sh
-chmod 755 "$FEISTY_MEOW_SCRIPTS/generator/wrapdoze.sh"
+# copy the system helper header.
+update_system_helper_header
 
 # rebuild the dependency tool.  needed by everything, pretty much, but
 # since it's from the xfree project, it doesn't need any of our libraries.
 
 # rebuild the dependency tool.  needed by everything, pretty much, but
 # since it's from the xfree project, it doesn't need any of our libraries.
-if [ ! -f "$CLAM_BINARY_DIR/makedep$EXE_ENDING" ]; then
+if [ ! -f "$CLAM_BINARIES/makedep$EXE_ENDING" ]; then
   pushd "$TOOL_SOURCES/dependency_tool" &>/dev/null
   make_code pre_compilation NO_DEPS=t OMIT_VERSIONS=t
   make_code NO_DEPS=t OMIT_VERSIONS=t
   pushd "$TOOL_SOURCES/dependency_tool" &>/dev/null
   make_code pre_compilation NO_DEPS=t OMIT_VERSIONS=t
   make_code NO_DEPS=t OMIT_VERSIONS=t
-  if [ ! -f "$INTERMEDIATE_EXE_DIR/makedep$EXE_ENDING" ]; then
+  if [ ! -f "$INTERMEDIATE_STORE/makedep$EXE_ENDING" ]; then
     echo ""
     echo ""
     echo "The build of the makedep tool has failed.  Unknown causes...  Argh."
     echo ""
     echo ""
     echo "The build of the makedep tool has failed.  Unknown causes...  Argh."
@@ -203,18 +244,18 @@ if [ ! -f "$CLAM_BINARY_DIR/makedep$EXE_ENDING" ]; then
   popd &>/dev/null
 fi
 
   popd &>/dev/null
 fi
 
-# rebuild the version tools and other support apps.
-if [ ! -f "$CLAM_BINARY_DIR/value_tagger$EXE_ENDING" \
-    -o ! -f "$CLAM_BINARY_DIR/version_stamper$EXE_ENDING" \
-    -o ! -f "$CLAM_BINARY_DIR/vsts_version_fixer$EXE_ENDING" \
-    -o ! -f "$CLAM_BINARY_DIR/write_build_config$EXE_ENDING" ]; then
+# rebuild the version tools and other support applications.
+if [ ! -f "$CLAM_BINARIES/value_tagger$EXE_ENDING" \
+    -o ! -f "$CLAM_BINARIES/version_stamper$EXE_ENDING" \
+    -o ! -f "$CLAM_BINARIES/vsts_version_fixer$EXE_ENDING" \
+    -o ! -f "$CLAM_BINARIES/write_build_config$EXE_ENDING" ]; then
   pushd "$TOOL_SOURCES/clam_tools" &>/dev/null
   make_code pre_compilation OMIT_VERSIONS=t
   make_code OMIT_VERSIONS=t
 
   pushd "$TOOL_SOURCES/clam_tools" &>/dev/null
   make_code pre_compilation OMIT_VERSIONS=t
   make_code OMIT_VERSIONS=t
 
-#hmmm: really this should check all the expected apps.
+#hmmm: really this should check all the expected applications.
 #      nice to just have an array of the things built by this guy.
 #      nice to just have an array of the things built by this guy.
-  if [ ! -f "$INTERMEDIATE_EXE_DIR/version_stamper$EXE_ENDING" ]; then
+  if [ ! -f "$INTERMEDIATE_STORE/version_stamper$EXE_ENDING" ]; then
     echo ""
     echo ""
     echo "The build of the version_stamper tool has failed.  Unknown causes...  Argh."
     echo ""
     echo ""
     echo "The build of the version_stamper tool has failed.  Unknown causes...  Argh."
@@ -231,11 +272,11 @@ if [ ! -f "$CLAM_BINARY_DIR/value_tagger$EXE_ENDING" \
 fi
 
 # build a few other utilities.
 fi
 
 # build a few other utilities.
-if [ ! -f "$CLAM_BINARY_DIR/short_path$EXE_ENDING" \
-    -o ! -f "$CLAM_BINARY_DIR/sleep_ms$EXE_ENDING" \
-    -o ! -f "$CLAM_BINARY_DIR/create_guid$EXE_ENDING" \
-    -o ! -f "$CLAM_BINARY_DIR/zap_process$EXE_ENDING" \
-    -o ! -f "$CLAM_BINARY_DIR/playsound$EXE_ENDING" ]; then
+if [ ! -f "$CLAM_BINARIES/short_path$EXE_ENDING" \
+    -o ! -f "$CLAM_BINARIES/sleep_ms$EXE_ENDING" \
+    -o ! -f "$CLAM_BINARIES/create_guid$EXE_ENDING" \
+    -o ! -f "$CLAM_BINARIES/zap_process$EXE_ENDING" \
+    -o ! -f "$CLAM_BINARIES/playsound$EXE_ENDING" ]; then
   pushd "$TOOL_SOURCES/simple_utilities" &>/dev/null
   make_code pre_compilation OMIT_VERSIONS=t
   make_code OMIT_VERSIONS=t
   pushd "$TOOL_SOURCES/simple_utilities" &>/dev/null
   make_code pre_compilation OMIT_VERSIONS=t
   make_code OMIT_VERSIONS=t
@@ -254,13 +295,15 @@ echo "The build binaries have been re-created (or were already present)."
 # we won't do the full build if they told us to just do the bootstrap.
 if [ -z "$JUST_BOOTSTRAP_APPS" ]; then
   echo Cleaning up the temporary files that were built.
 # we won't do the full build if they told us to just do the bootstrap.
 if [ -z "$JUST_BOOTSTRAP_APPS" ]; then
   echo Cleaning up the temporary files that were built.
-  bash "$BUILD_SCRIPTS_DIR/whack_build.sh" 
-#wrong!  we don't want to whack it all. clean
+  bash "$BUILD_SCRIPTS_PATH/whack_build.sh" 
 
   # recreate our useful junk directories...
 
   # recreate our useful junk directories...
-  mkdir -p "$GENERATED_DIR"
-  mkdir -p "$TEMPORARIES_DIR"
-  mkdir -p "$LOGS_DIR"
+  mkdir -p "$FEISTY_MEOW_GENERATED_STORE"
+  mkdir -p "$TEMPORARIES_PILE"
+  mkdir -p "$FEISTY_MEOW_LOGS"
+
+  # re-copy the system helper header.
+  update_system_helper_header
 
   echo Now starting a normal build of the repository source code.
   pushd "$FEISTY_MEOW_APEX" &>/dev/null
 
   echo Now starting a normal build of the repository source code.
   pushd "$FEISTY_MEOW_APEX" &>/dev/null