Ver código fonte

update configure

ruki 1 ano atrás
pai
commit
ea026e75bb
1 arquivos alterados com 40 adições e 10 exclusões
  1. 40 10
      configure

+ 40 - 10
configure

@@ -686,15 +686,15 @@ _target_kind_default="static"
 
 # set the default project generator and build program
 if is_host "freebsd" "bsd"; then
-    _project_generator="gmake"
+    project_generator="gmake"
     _make_program_default="gmake"
     _ninja_program_default="ninja"
 elif is_host "msys" "cygwin"; then
-    _project_generator="gmake"
+    project_generator="gmake"
     _make_program_default="make.exe"
     _ninja_program_default="ninja.exe"
 else
-    _project_generator="gmake"
+    project_generator="gmake"
     _make_program_default="make"
     _ninja_program_default="ninja"
 fi
@@ -2531,6 +2531,24 @@ add_options() {
     done
 }
 
+# before_install in target
+before_install() {
+    if ! ${_loading_targets}; then
+        return
+    fi
+    local funcname="${1}"
+    _add_target_item "${_xmake_sh_target_current}" "before_install" "${funcname}"
+}
+
+# after_install in target
+after_install() {
+    if ! ${_loading_targets}; then
+        return
+    fi
+    local funcname="${1}"
+    _add_target_item "${_xmake_sh_target_current}" "after_install" "${funcname}"
+}
+
 #-----------------------------------------------------------------------------
 # toolchain configuration apis
 #
@@ -2686,7 +2704,7 @@ Common options:
   --verbose               Display more information.
   --diagnosis             Display lots of diagnosis information.
 
-  --generator=GENERATOR   Set the project generator. (default: '"${_project_generator}"')
+  --generator=GENERATOR   Set the project generator. (default: '"${project_generator}"')
                             - gmake
                             - ninja
   --make=MAKE             Set the make program. (default: '"${_make_program_default}"')
@@ -2791,7 +2809,7 @@ _handle_option() {
         _target_toolchain=${value}
         return 0
     elif test_eq "${name}" "generator"; then
-        _project_generator=${value}
+        project_generator=${value}
         return 0
     elif test_eq "${name}" "make"; then
         _make_program=${value}
@@ -3310,9 +3328,9 @@ _toolchain_detect_ninja() {
 
 # detect build backend
 _toolchain_detect_backend() {
-    if test "x${_project_generator}" = "xgmake"; then
+    if test "x${project_generator}" = "xgmake"; then
         _toolchain_detect_make
-    elif test "x${_project_generator}" = "xninja"; then
+    elif test "x${project_generator}" = "xninja"; then
         _toolchain_detect_ninja
     fi
 }
@@ -4190,6 +4208,12 @@ _gmake_add_install_target() {
         installdir="\$(INSTALLDIR)"
     fi
 
+    # before install
+    _get_target_item "${target}" "before_install"; local before_install="${_ret}"
+    if test_nz "${before_install}"; then
+        eval ${before_install} "\${target}" "\${installdir}"
+    fi
+
     # @see https://github.com/tboox/tbox/issues/214
     install_for_soname=false
     if test_eq "${targetkind}" "shared"; then
@@ -4287,6 +4311,12 @@ _gmake_add_install_target() {
             print "\t@cp -p ${srcinstallfile} ${dstinstallfile}" >> "${xmake_sh_makefile}"
         done
     fi
+
+    # after install
+    _get_target_item "${target}" "after_install"; local after_install="${_ret}"
+    if test_nz "${after_install}"; then
+        eval ${after_install} "\${target}" "\${installdir}"
+    fi
 }
 
 _gmake_add_install_targets() {
@@ -4343,12 +4373,12 @@ _generate_for_ninja() {
 #
 
 _generate_build_file() {
-    if test_eq "${_project_generator}" "gmake"; then
+    if test_eq "${project_generator}" "gmake"; then
         _generate_for_gmake
-    elif test_eq "${_project_generator}" "ninja"; then
+    elif test_eq "${project_generator}" "ninja"; then
         _generate_for_ninja
     else
-        raise "unknown generator: ${_project_generator}"
+        raise "unknown generator: ${project_generator}"
     fi
 }
 _generate_build_file