Updated configure to add both m4 and python3, then corrected the
python preprocessor script to execute "env python3" instead of the hard-coded non-existent directory that was on the shebang line.
This commit is contained in:
parent
9de99f8e1c
commit
a55adf128f
File diff suppressed because it is too large
Load Diff
12
defs.mak
12
defs.mak
|
|
@ -50,7 +50,7 @@ AR = ar
|
||||||
ARFLAGS = crv
|
ARFLAGS = crv
|
||||||
LINK = ld -r
|
LINK = ld -r
|
||||||
LD = /bin/ld
|
LD = /bin/ld
|
||||||
M4 = @M4@
|
M4 = /bin/m4
|
||||||
RANLIB = ranlib
|
RANLIB = ranlib
|
||||||
SHDLIB_EXT = .so
|
SHDLIB_EXT = .so
|
||||||
LDDL_FLAGS = ${LDFLAGS} -shared -Wl,-soname,$@ -Wl,--version-script=${MAGICDIR}/magic/symbol.map
|
LDDL_FLAGS = ${LDFLAGS} -shared -Wl,-soname,$@ -Wl,--version-script=${MAGICDIR}/magic/symbol.map
|
||||||
|
|
@ -59,14 +59,14 @@ LIB_SPECS = -L/usr/lib64 -ltk8.6 -L/usr/lib64 -ltcl8.6
|
||||||
WISH_EXE = /usr/bin/wish
|
WISH_EXE = /usr/bin/wish
|
||||||
TCL_LIB_DIR = /usr/lib
|
TCL_LIB_DIR = /usr/lib
|
||||||
MAGIC_VERSION = 8.2
|
MAGIC_VERSION = 8.2
|
||||||
MAGIC_REVISION = 13
|
MAGIC_REVISION = 14
|
||||||
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
CPP = /scripts/preproc.py
|
CPP = /scripts/preproc.py
|
||||||
CXX = g++
|
CXX = g++
|
||||||
|
|
||||||
CPPFLAGS = -I. -I${MAGICDIR}
|
CPPFLAGS = -I. -I${MAGICDIR}
|
||||||
DFLAGS = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"13\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DX11_BACKING_STORE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DNDEBUG -DGCORE=\"/bin/gcore\"
|
DFLAGS = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"14\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DX11_BACKING_STORE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DNDEBUG -DGCORE=\"/bin/gcore\"
|
||||||
DFLAGS += -DSHDLIB_EXT=\".so\"
|
DFLAGS += -DSHDLIB_EXT=\".so\"
|
||||||
CFLAGS = -g -m64 -fPIC -Wimplicit-int -fPIC
|
CFLAGS = -g -m64 -fPIC -Wimplicit-int -fPIC
|
||||||
|
|
||||||
|
|
@ -78,9 +78,9 @@ DEPEND_FLAG = -MM
|
||||||
EXEEXT =
|
EXEEXT =
|
||||||
|
|
||||||
GR_CFLAGS =
|
GR_CFLAGS =
|
||||||
GR_DFLAGS = -DX11 -DXLIB -DCAIRO -DNDEBUG
|
GR_DFLAGS = -DX11 -DXLIB -DOGL -DCAIRO -DNDEBUG
|
||||||
GR_LIBS = -lX11 -lcairo -lfontconfig -lfreetype ${X11_LDFLAGS}
|
GR_LIBS = -lX11 -lGL -lGLU -lXi -lXmu -lXext -lm -lcairo -lfontconfig -lfreetype -lstdc++ ${X11_LDFLAGS}
|
||||||
GR_SRCS = ${TK_SRCS} ${TOGL_SRCS} ${TKCOMMON_SRCS}
|
GR_SRCS = ${TK_SRCS} ${TOGL_SRCS} ${TOGL_SRCS} ${TKCOMMON_SRCS}
|
||||||
GR_HELPER_SRCS =
|
GR_HELPER_SRCS =
|
||||||
GR_HELPER_PROG =
|
GR_HELPER_PROG =
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,7 @@ static char *grDisplayTypes[] = {
|
||||||
extern bool x11SetDisplay();
|
extern bool x11SetDisplay();
|
||||||
extern bool oglSetDisplay();
|
extern bool oglSetDisplay();
|
||||||
extern bool nullSetDisplay();
|
extern bool nullSetDisplay();
|
||||||
|
extern bool cairoSetDisplay();
|
||||||
|
|
||||||
static bool (*(grInitProcs[]))() = {
|
static bool (*(grInitProcs[]))() = {
|
||||||
#ifdef X11
|
#ifdef X11
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
readline-4.3
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -417,7 +417,7 @@ $config_files
|
||||||
|
|
||||||
Report bugs to the package provider."
|
Report bugs to the package provider."
|
||||||
|
|
||||||
ac_cs_config="'--without-opengl' 'CFLAGS=-g'"
|
ac_cs_config="'CFLAGS=-g'"
|
||||||
ac_cs_version="\
|
ac_cs_version="\
|
||||||
config.status
|
config.status
|
||||||
configured by ./configure, generated by GNU Autoconf 2.69,
|
configured by ./configure, generated by GNU Autoconf 2.69,
|
||||||
|
|
@ -496,7 +496,7 @@ if $ac_cs_silent; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if $ac_cs_recheck; then
|
if $ac_cs_recheck; then
|
||||||
set X /bin/sh './configure' '--without-opengl' 'CFLAGS=-g' $ac_configure_extra_args --no-create --no-recursion
|
set X /bin/sh './configure' 'CFLAGS=-g' $ac_configure_extra_args --no-create --no-recursion
|
||||||
shift
|
shift
|
||||||
$as_echo "running CONFIG_SHELL=/bin/sh $*" >&6
|
$as_echo "running CONFIG_SHELL=/bin/sh $*" >&6
|
||||||
CONFIG_SHELL='/bin/sh'
|
CONFIG_SHELL='/bin/sh'
|
||||||
|
|
@ -588,15 +588,15 @@ S["INSTALL_TARGET"]="install-tcl"
|
||||||
S["ALL_TARGET"]="tcl"
|
S["ALL_TARGET"]="tcl"
|
||||||
S["OA_LIBS"]=""
|
S["OA_LIBS"]=""
|
||||||
S["OA"]=""
|
S["OA"]=""
|
||||||
S["MAGIC_REVISION"]="13"
|
S["MAGIC_REVISION"]="14"
|
||||||
S["MAGIC_VERSION"]="8.2"
|
S["MAGIC_VERSION"]="8.2"
|
||||||
S["LD_RUN_PATH"]=""
|
S["LD_RUN_PATH"]=""
|
||||||
S["SHLIB_CFLAGS"]="-Wimplicit-int -fPIC"
|
S["SHLIB_CFLAGS"]="-Wimplicit-int -fPIC"
|
||||||
S["DEPEND_FLAG"]="-MM"
|
S["DEPEND_FLAG"]="-MM"
|
||||||
S["gr_hprog"]=""
|
S["gr_hprog"]=""
|
||||||
S["gr_hsrcs"]=""
|
S["gr_hsrcs"]=""
|
||||||
S["gr_srcs"]=" ${TK_SRCS} ${TOGL_SRCS} ${TKCOMMON_SRCS}"
|
S["gr_srcs"]=" ${TK_SRCS} ${TOGL_SRCS} ${TOGL_SRCS} ${TKCOMMON_SRCS}"
|
||||||
S["gr_dflags"]=" -DX11 -DXLIB -DCAIRO"
|
S["gr_dflags"]=" -DX11 -DXLIB -DOGL -DCAIRO"
|
||||||
S["gr_cflags"]=""
|
S["gr_cflags"]=""
|
||||||
S["rl_libs"]=""
|
S["rl_libs"]=""
|
||||||
S["rl_defs"]=""
|
S["rl_defs"]=""
|
||||||
|
|
@ -614,7 +614,7 @@ S["extra_libs"]=" ${MAGICDIR}/ext2sim/libext2sim.o ${MAGICDIR}/ext2spice/libext2
|
||||||
"ter/librouter.o ${MAGICDIR}/irouter/libirouter.o ${MAGICDIR}/grouter/libgrouter.o ${MAGICDIR}/gcr/libgcr.o ${MAGICDIR}/tcltk/libtcltk.o"
|
"ter/librouter.o ${MAGICDIR}/irouter/libirouter.o ${MAGICDIR}/grouter/libgrouter.o ${MAGICDIR}/gcr/libgcr.o ${MAGICDIR}/tcltk/libtcltk.o"
|
||||||
S["SCRIPTS"]=""
|
S["SCRIPTS"]=""
|
||||||
S["PACKAGE"]="magic"
|
S["PACKAGE"]="magic"
|
||||||
S["gr_libs"]=" -lX11 -lcairo -lfontconfig -lfreetype"
|
S["gr_libs"]=" -lX11 -lGL -lGLU -lXi -lXmu -lXext -lm -lcairo -lfontconfig -lfreetype -lstdc++"
|
||||||
S["TCL_LIB_DIR"]="/usr/lib"
|
S["TCL_LIB_DIR"]="/usr/lib"
|
||||||
S["TCLSH_EXE"]="/usr/bin/tclsh"
|
S["TCLSH_EXE"]="/usr/bin/tclsh"
|
||||||
S["WISH_EXE"]="/usr/bin/wish"
|
S["WISH_EXE"]="/usr/bin/wish"
|
||||||
|
|
@ -636,6 +636,7 @@ S["GCORE"]="/bin/gcore"
|
||||||
S["EGREP"]="/bin/grep -E"
|
S["EGREP"]="/bin/grep -E"
|
||||||
S["GREP"]="/bin/grep"
|
S["GREP"]="/bin/grep"
|
||||||
S["PYTHON3"]="/bin/python3"
|
S["PYTHON3"]="/bin/python3"
|
||||||
|
S["M4"]="/bin/m4"
|
||||||
S["RANLIB"]="ranlib"
|
S["RANLIB"]="ranlib"
|
||||||
S["INSTALL_DATA"]="${INSTALL} -m 644"
|
S["INSTALL_DATA"]="${INSTALL} -m 644"
|
||||||
S["INSTALL_SCRIPT"]="${INSTALL}"
|
S["INSTALL_SCRIPT"]="${INSTALL}"
|
||||||
|
|
@ -666,16 +667,16 @@ S["build"]="x86_64-unknown-linux-gnu"
|
||||||
S["target_alias"]=""
|
S["target_alias"]=""
|
||||||
S["host_alias"]=""
|
S["host_alias"]=""
|
||||||
S["build_alias"]=""
|
S["build_alias"]=""
|
||||||
S["LIBS"]="-lcairo "
|
S["LIBS"]="-lcairo -lGLU -lGL "
|
||||||
S["ECHO_T"]=""
|
S["ECHO_T"]=""
|
||||||
S["ECHO_N"]="-n"
|
S["ECHO_N"]="-n"
|
||||||
S["ECHO_C"]=""
|
S["ECHO_C"]=""
|
||||||
S["DEFS"]="-DPACKAGE_NAME=\\\"\\\" -DPACKAGE_TARNAME=\\\"\\\" -DPACKAGE_VERSION=\\\"\\\" -DPACKAGE_STRING=\\\"\\\" -DPACKAGE_BUGREPORT=\\\"\\\" -DPACKAGE_URL=\\\"\\\" -DMAGIC_VERSION="\
|
S["DEFS"]="-DPACKAGE_NAME=\\\"\\\" -DPACKAGE_TARNAME=\\\"\\\" -DPACKAGE_VERSION=\\\"\\\" -DPACKAGE_STRING=\\\"\\\" -DPACKAGE_BUGREPORT=\\\"\\\" -DPACKAGE_URL=\\\"\\\" -DMAGIC_VERSION="\
|
||||||
"\\\"8.2\\\" -DMAGIC_REVISION=\\\"13\\\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -D"\
|
"\\\"8.2\\\" -DMAGIC_REVISION=\\\"14\\\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -D"\
|
||||||
"HAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG"\
|
"HAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG"\
|
||||||
"=8 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFI"\
|
"=8 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFI"\
|
||||||
"LE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DX11_BACKING_STORE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DVECTOR_FONTS=1"\
|
"LE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DX11_BACKING_STORE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -"\
|
||||||
" -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -Dlinux=1 -DSYSV=1 -DISC=1"
|
"DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1"
|
||||||
S["mandir"]="${datarootdir}/man"
|
S["mandir"]="${datarootdir}/man"
|
||||||
S["localedir"]="${datarootdir}/locale"
|
S["localedir"]="${datarootdir}/locale"
|
||||||
S["libdir"]="${exec_prefix}/lib"
|
S["libdir"]="${exec_prefix}/lib"
|
||||||
|
|
|
||||||
|
|
@ -672,6 +672,7 @@ GCORE
|
||||||
EGREP
|
EGREP
|
||||||
GREP
|
GREP
|
||||||
PYTHON3
|
PYTHON3
|
||||||
|
M4
|
||||||
RANLIB
|
RANLIB
|
||||||
INSTALL_DATA
|
INSTALL_DATA
|
||||||
INSTALL_SCRIPT
|
INSTALL_SCRIPT
|
||||||
|
|
@ -4028,6 +4029,56 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
for ac_prog in gm4 gnum4 m4
|
||||||
|
do
|
||||||
|
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||||
|
set dummy $ac_prog; ac_word=$2
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||||
|
$as_echo_n "checking for $ac_word... " >&6; }
|
||||||
|
if ${ac_cv_path_M4+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
case $M4 in
|
||||||
|
[\\/]* | ?:[\\/]*)
|
||||||
|
ac_cv_path_M4="$M4" # Let the user override the test with a path.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||||
|
for as_dir in $PATH
|
||||||
|
do
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
test -z "$as_dir" && as_dir=.
|
||||||
|
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||||
|
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||||
|
ac_cv_path_M4="$as_dir/$ac_word$ac_exec_ext"
|
||||||
|
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
M4=$ac_cv_path_M4
|
||||||
|
if test -n "$M4"; then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $M4" >&5
|
||||||
|
$as_echo "$M4" >&6; }
|
||||||
|
else
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
test -n "$M4" && break
|
||||||
|
done
|
||||||
|
test -n "$M4" || M4="no"
|
||||||
|
|
||||||
|
if test x$M4 = xno; then
|
||||||
|
as_fn_error $? "M4 is required" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
|
||||||
# Extract the first word of "python3", so it can be a program name with args.
|
# Extract the first word of "python3", so it can be a program name with args.
|
||||||
set dummy python3; ac_word=$2
|
set dummy python3; ac_word=$2
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,12 @@ AC_ISC_POSIX
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
AC_PROG_RANLIB
|
AC_PROG_RANLIB
|
||||||
|
|
||||||
|
dnl GNU M4 is preferred due to some of the option switches.
|
||||||
|
AC_PATH_PROGS([M4], [gm4 gnum4 m4], [no])
|
||||||
|
if test x$M4 = xno; then
|
||||||
|
AC_MSG_ERROR([M4 is required])
|
||||||
|
fi
|
||||||
|
|
||||||
dnl Python3 is preferred for running the preprocessor script
|
dnl Python3 is preferred for running the preprocessor script
|
||||||
dnl but CPP can be used instead.
|
dnl but CPP can be used instead.
|
||||||
AC_PATH_PROG([PYTHON3], [python3], [no])
|
AC_PATH_PROG([PYTHON3], [python3], [no])
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ AR = ar
|
||||||
ARFLAGS = crv
|
ARFLAGS = crv
|
||||||
LINK = ld -r
|
LINK = ld -r
|
||||||
LD = /bin/ld
|
LD = /bin/ld
|
||||||
M4 = @M4@
|
M4 = /bin/m4
|
||||||
RANLIB = ranlib
|
RANLIB = ranlib
|
||||||
SHDLIB_EXT = .so
|
SHDLIB_EXT = .so
|
||||||
LDDL_FLAGS = ${LDFLAGS} -shared -Wl,-soname,$@ -Wl,--version-script=${MAGICDIR}/magic/symbol.map
|
LDDL_FLAGS = ${LDFLAGS} -shared -Wl,-soname,$@ -Wl,--version-script=${MAGICDIR}/magic/symbol.map
|
||||||
|
|
@ -59,14 +59,14 @@ LIB_SPECS = -L/usr/lib64 -ltk8.6 -L/usr/lib64 -ltcl8.6
|
||||||
WISH_EXE = /usr/bin/wish
|
WISH_EXE = /usr/bin/wish
|
||||||
TCL_LIB_DIR = /usr/lib
|
TCL_LIB_DIR = /usr/lib
|
||||||
MAGIC_VERSION = 8.2
|
MAGIC_VERSION = 8.2
|
||||||
MAGIC_REVISION = 13
|
MAGIC_REVISION = 14
|
||||||
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
CPP = /scripts/preproc.py
|
CPP = /scripts/preproc.py
|
||||||
CXX = g++
|
CXX = g++
|
||||||
|
|
||||||
CPPFLAGS = -I. -I${MAGICDIR}
|
CPPFLAGS = -I. -I${MAGICDIR}
|
||||||
DFLAGS = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"13\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DX11_BACKING_STORE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DNDEBUG -DGCORE=\"/bin/gcore\"
|
DFLAGS = -DCAD_DIR=\"${LIBDIR}\" -DBIN_DIR=\"${BINDIR}\" -DTCL_DIR=\"${TCLDIR}\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DMAGIC_VERSION=\"8.2\" -DMAGIC_REVISION=\"14\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSIZEOF_VOID_P=8 -DSIZEOF_UNSIGNED_INT=4 -DSIZEOF_UNSIGNED_LONG=8 -DSIZEOF_UNSIGNED_LONG_LONG=8 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_PATHS_H=1 -DHAVE_VA_COPY=1 -DHAVE___VA_COPY=1 -DFILE_LOCKS=1 -DCALMA_MODULE=1 -DCIF_MODULE=1 -DX11_BACKING_STORE=1 -DPLOT_MODULE=1 -DLEF_MODULE=1 -DROUTE_MODULE=1 -DUSE_NEW_MACROS=1 -DHAVE_LIBGL=1 -DHAVE_LIBGLU=1 -DVECTOR_FONTS=1 -DHAVE_LIBCAIRO=1 -DMAGIC_WRAPPER=1 -DTHREE_D=1 -Dlinux=1 -DSYSV=1 -DISC=1 -DNDEBUG -DGCORE=\"/bin/gcore\"
|
||||||
DFLAGS += -DSHDLIB_EXT=\".so\"
|
DFLAGS += -DSHDLIB_EXT=\".so\"
|
||||||
CFLAGS = -g -m64 -fPIC -Wimplicit-int -fPIC
|
CFLAGS = -g -m64 -fPIC -Wimplicit-int -fPIC
|
||||||
|
|
||||||
|
|
@ -78,9 +78,9 @@ DEPEND_FLAG = -MM
|
||||||
EXEEXT =
|
EXEEXT =
|
||||||
|
|
||||||
GR_CFLAGS =
|
GR_CFLAGS =
|
||||||
GR_DFLAGS = -DX11 -DXLIB -DCAIRO -DNDEBUG
|
GR_DFLAGS = -DX11 -DXLIB -DOGL -DCAIRO -DNDEBUG
|
||||||
GR_LIBS = -lX11 -lcairo -lfontconfig -lfreetype ${X11_LDFLAGS}
|
GR_LIBS = -lX11 -lGL -lGLU -lXi -lXmu -lXext -lm -lcairo -lfontconfig -lfreetype -lstdc++ ${X11_LDFLAGS}
|
||||||
GR_SRCS = ${TK_SRCS} ${TOGL_SRCS} ${TKCOMMON_SRCS}
|
GR_SRCS = ${TK_SRCS} ${TOGL_SRCS} ${TOGL_SRCS} ${TKCOMMON_SRCS}
|
||||||
GR_HELPER_SRCS =
|
GR_HELPER_SRCS =
|
||||||
GR_HELPER_PROG =
|
GR_HELPER_PROG =
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#!/ef/efabless/opengalaxy/venv/bin/python3
|
#!/bin/env python3
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# preproc.py
|
# preproc.py
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# For installation, put this file (magic.sh) in a known executable path.
|
||||||
|
# Put startup script "magic.tcl", shared library "tclmagic.so", and
|
||||||
|
# "wish" replacement "magicexec" in ${CAD_ROOT}/magic/tcl/.
|
||||||
|
#
|
||||||
|
# This script starts magic under the Tcl interpreter,
|
||||||
|
# reading commands from a special startup script which
|
||||||
|
# launches magic and retains the Tcl interactive interpreter.
|
||||||
|
|
||||||
|
# Parse for the argument "-c[onsole]". If it exists, run magic
|
||||||
|
# with the TkCon console. Strip this argument from the argument list.
|
||||||
|
|
||||||
|
TKCON=true
|
||||||
|
DNULL=
|
||||||
|
MAGIC_WISH=/usr/bin/wish
|
||||||
|
export MAGIC_WISH
|
||||||
|
|
||||||
|
# Hacks for Cygwin
|
||||||
|
if [ "`uname | cut -d_ -f1`" = "CYGWIN" ]; then
|
||||||
|
export PATH="$PATH:/usr/lib"
|
||||||
|
export DISPLAY=${DISPLAY:=":0"}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Preserve quotes in arguments
|
||||||
|
arglist=''
|
||||||
|
for i in "$@" ; do
|
||||||
|
case $i in
|
||||||
|
-noc*) TKCON=;;
|
||||||
|
-dnull) DNULL=true;;
|
||||||
|
--version) TKCON=; DNULL=true;;
|
||||||
|
--prefix) TKCON=; DNULL=true;;
|
||||||
|
*) arglist="$arglist${arglist:+ }\"${i//\"/\\\"}\"";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $TKCON ]; then
|
||||||
|
|
||||||
|
if [ $DNULL ]; then
|
||||||
|
exec /usr/local/lib/magic/tcl/tkcon.tcl -eval "source /usr/local/lib/magic/tcl/console.tcl" \
|
||||||
|
-slave "set argc $#; set argv [list $*]; source /usr/local/lib/magic/tcl/magic.tcl"
|
||||||
|
else
|
||||||
|
exec /usr/local/lib/magic/tcl/tkcon.tcl -eval "source /usr/local/lib/magic/tcl/console.tcl" \
|
||||||
|
-slave "package require Tk; set argc $#; set argv [list $arglist]; \
|
||||||
|
source /usr/local/lib/magic/tcl/magic.tcl"
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
#
|
||||||
|
# Run the stand-in for wish (magicexec), which acts exactly like "wish"
|
||||||
|
# except that it replaces ~/.wishrc with magic.tcl. This executable is
|
||||||
|
# *only* needed when running without the console; the console itself is
|
||||||
|
# capable of sourcing the startup script.
|
||||||
|
#
|
||||||
|
# With option "-dnull" we set up for operation without Tk (simple interpreter
|
||||||
|
# only, efficient for running in batch mode).
|
||||||
|
#
|
||||||
|
if [ $DNULL ]; then
|
||||||
|
exec /usr/local/lib/magic/tcl/magicdnull -nowrapper "$@"
|
||||||
|
else
|
||||||
|
exec /usr/local/lib/magic/tcl/magicexec -- "$@"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,406 @@
|
||||||
|
# Wishrc startup for ToolScript (magic)
|
||||||
|
#
|
||||||
|
# For installation: Put this file and also magicwrap.so into
|
||||||
|
# directory /usr/local/lib/magic/tcl, and set the "load" line below
|
||||||
|
# to point to the location of magicwrap.so. Also see comments
|
||||||
|
# in shell script "magic.sh".
|
||||||
|
|
||||||
|
global Opts
|
||||||
|
|
||||||
|
# If we called magic via the non-console script, then we want to reset
|
||||||
|
# the environment variable HOME to its original value.
|
||||||
|
|
||||||
|
if {${tcl_version} >= 8.6} {
|
||||||
|
load -lazy /usr/local/lib/magic/tcl/tclmagic.so
|
||||||
|
} else {
|
||||||
|
load /usr/local/lib/magic/tcl/tclmagic.so
|
||||||
|
}
|
||||||
|
|
||||||
|
# It is important to make sure no magic commands overlap with Tcl built-in
|
||||||
|
# commands, because otherwise the namespace import will fail.
|
||||||
|
|
||||||
|
proc pushnamespace { name } {
|
||||||
|
|
||||||
|
set y [namespace eval ${name} info commands ::${name}::*]
|
||||||
|
set z [info commands]
|
||||||
|
|
||||||
|
# Watch especially for magic "wizard" commands, as we don't want to confuse
|
||||||
|
# the literal "*" with a regular expression *. "regsub" below takes care of it.
|
||||||
|
|
||||||
|
foreach v $y {
|
||||||
|
regsub -all {\*} $v {\\*} i
|
||||||
|
set x [namespace tail $i]
|
||||||
|
if {[lsearch $z $x] < 0} {
|
||||||
|
namespace import $i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
proc popnamespace { name } {
|
||||||
|
set z [info commands]
|
||||||
|
set l [expr [string length ${name}] + 5]
|
||||||
|
|
||||||
|
while {[set v [lsearch $z ${name}_tcl_*]] >= 0} {
|
||||||
|
set y [lindex $z $v]
|
||||||
|
set w [string range $y $l end]
|
||||||
|
interp alias {} ::$w {}
|
||||||
|
rename ::$y ::$w
|
||||||
|
puts "Info: replacing ::$w with ::$y"
|
||||||
|
}
|
||||||
|
namespace forget ::${name}::*
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Define the drcstate procedure expected by the background DRC code.
|
||||||
|
|
||||||
|
proc magic::drcstate {option} {
|
||||||
|
# (Null proc---see wrapper.tcl for a useful version)
|
||||||
|
}
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------
|
||||||
|
# Define these console routines so that they don't produce errors
|
||||||
|
# when Magic is run in batch mode
|
||||||
|
|
||||||
|
if {[catch {tkcon title}]} {
|
||||||
|
proc magic::suspendout {} {}
|
||||||
|
proc magic::resumeout {} {}
|
||||||
|
proc magic::dialog {} {}
|
||||||
|
proc magic::consolegeometry {} {}
|
||||||
|
proc magic::consolefocus {} {}
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Cross-Application section
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Check namespaces for existence of other applications
|
||||||
|
set UsingIRSIM 0
|
||||||
|
set UsingXCircuit 0
|
||||||
|
set UsingNetgen 0
|
||||||
|
set nlist [namespace children]
|
||||||
|
foreach i $nlist {
|
||||||
|
switch $i {
|
||||||
|
::irsim { set UsingIRSIM 1 }
|
||||||
|
::xcircuit { set UsingXCircuit 1 }
|
||||||
|
::netgen { set UsingNetgen 1 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Setup IRSIM assuming that the Tcl version is installed.
|
||||||
|
# We do not need to rename procedure irsim to NULL because it is
|
||||||
|
# redefined in a script, which simply overwrites the original.
|
||||||
|
|
||||||
|
proc irsim { args } {
|
||||||
|
global CAD_ROOT
|
||||||
|
set irsimscript [glob -nocomplain ${CAD_ROOT}/irsim/tcl/irsim.tcl]
|
||||||
|
if { ${irsimscript} == {} } {
|
||||||
|
puts stderr "\"irsim\" requires Tcl-based IRSIM version 9.6 or newer."
|
||||||
|
puts stderr "Could not find script \"irsim.tcl\". If IRSIM is installed in a"
|
||||||
|
puts stderr "place other than CAD_ROOT (=${CAD_ROOT}), use the command"
|
||||||
|
puts stderr "\"source <path>/irsim.tcl\" before doing \"irsim\"."
|
||||||
|
} else {
|
||||||
|
source $irsimscript
|
||||||
|
eval {irsim} $args
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Setup Xcircuit assuming that the Tcl version is installed.
|
||||||
|
|
||||||
|
proc xcircuit { args } {
|
||||||
|
global CAD_ROOT
|
||||||
|
global argc
|
||||||
|
global argv
|
||||||
|
set xcircscript [glob -nocomplain ${CAD_ROOT}/xcircuit*/xcircuit.tcl]
|
||||||
|
if { ${xcircscript} == {} } {
|
||||||
|
puts stderr "\"xcircuit\" requires Tcl-based XCircuit version 3.1 or newer."
|
||||||
|
puts stderr "Could not find script \"xcircuit.tcl\". If XCircuit is installed in a"
|
||||||
|
puts stderr "place other than CAD_ROOT (=${CAD_ROOT}), use the command"
|
||||||
|
puts stderr "\"source <path>/xcircuit.tcl\"."
|
||||||
|
} else {
|
||||||
|
# if there are multiple installed versions, choose the highest version.
|
||||||
|
if {[llength $xcircscript] > 1} {
|
||||||
|
set xcircscript [lindex [lsort -decreasing -dictionary $xcircscript] 0]
|
||||||
|
}
|
||||||
|
# execute script in the scope of magic, because its variable space is
|
||||||
|
# not modularized.
|
||||||
|
set argv $args
|
||||||
|
set argc [llength $args]
|
||||||
|
uplevel #0 source $xcircscript
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Setup Netgen assuming that the Tcl version is installed.
|
||||||
|
|
||||||
|
proc netgen { args } {
|
||||||
|
global CAD_ROOT
|
||||||
|
global argc
|
||||||
|
global argv
|
||||||
|
set netgenscript [glob -nocomplain ${CAD_ROOT}/netgen/tcl/netgen.tcl]
|
||||||
|
if { ${netgenscript} == {} } {
|
||||||
|
puts stderr "\"netgen\" requires Tcl-based Netgen version 1.2 or newer."
|
||||||
|
puts stderr "Could not find script \"netgen.tcl\". If Netgen is installed in a"
|
||||||
|
puts stderr "place other than CAD_ROOT (=${CAD_ROOT}), use the command"
|
||||||
|
puts stderr "\"source <path>/netgen.tcl\"."
|
||||||
|
} else {
|
||||||
|
set argv $args
|
||||||
|
set argc [llength $args]
|
||||||
|
uplevel #0 source $netgenscript
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add the "echo" command
|
||||||
|
|
||||||
|
proc echo {args} {
|
||||||
|
puts stdout $args
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse argument list for "-c[onsole]" and "-now[rapper]".
|
||||||
|
|
||||||
|
set celllist {}
|
||||||
|
set do_wrapper true
|
||||||
|
set do_recover false
|
||||||
|
set argafter {magic::initialize}
|
||||||
|
set x {}
|
||||||
|
for {set i 0} {$i < $argc} {incr i 1} {
|
||||||
|
set x [lindex $argv $i]
|
||||||
|
#
|
||||||
|
# Command-line argument handling goes here
|
||||||
|
# We have to handle all of magic's command line arguments so we can
|
||||||
|
# figure out if a cell has been named for preloading.
|
||||||
|
#
|
||||||
|
switch -regexp -- $x {
|
||||||
|
^-now(rap)?(per)?$ { ;# This regexp accepts -now, -nowrap, and -nowrapper
|
||||||
|
set do_wrapper false
|
||||||
|
}
|
||||||
|
^-dnull {
|
||||||
|
set do_wrapper false
|
||||||
|
lappend argafter $x
|
||||||
|
}
|
||||||
|
^-r(e)?(cover)?$ {
|
||||||
|
set do_recover true
|
||||||
|
}
|
||||||
|
^-rc(file)?$ {
|
||||||
|
lappend argafter $x
|
||||||
|
incr i 1
|
||||||
|
lappend argafter [lindex $argv $i]
|
||||||
|
}
|
||||||
|
^-d -
|
||||||
|
^-g -
|
||||||
|
^-m -
|
||||||
|
^-i -
|
||||||
|
^-T {
|
||||||
|
lappend argafter $x
|
||||||
|
incr i 1
|
||||||
|
lappend argafter [lindex $argv $i]
|
||||||
|
}
|
||||||
|
^-F {
|
||||||
|
lappend argafter $x
|
||||||
|
incr i 1
|
||||||
|
lappend argafter [lindex $argv $i]
|
||||||
|
incr i 1
|
||||||
|
lappend argafter [lindex $argv $i]
|
||||||
|
}
|
||||||
|
^--version {
|
||||||
|
puts stdout "8.2.14"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
^--prefix {
|
||||||
|
puts stdout $CAD_ROOT
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
^-D -
|
||||||
|
^-n* {
|
||||||
|
lappend argafter $x
|
||||||
|
}
|
||||||
|
default {
|
||||||
|
lappend celllist $x
|
||||||
|
lappend argafter $x
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if {$do_wrapper} {
|
||||||
|
source ${CAD_ROOT}/magic/tcl/wrapper.tcl
|
||||||
|
lappend argafter "-nowindow" ;# Set no-initial-window option in magic.
|
||||||
|
}
|
||||||
|
unset x i do_wrapper
|
||||||
|
if {[catch {eval $argafter}]} { ;# magic::initialize ${argv}
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Check for presence of padlist manager script and include it
|
||||||
|
|
||||||
|
if {[file exists ${CAD_ROOT}/magic/tcl/padlist.tcl]} {
|
||||||
|
source ${CAD_ROOT}/magic/tcl/padlist.tcl
|
||||||
|
set Opts(padlist) 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Check for presence of the miscellaneous tools script and include it
|
||||||
|
|
||||||
|
if {[file exists ${CAD_ROOT}/magic/tcl/tools.tcl]} {
|
||||||
|
source ${CAD_ROOT}/magic/tcl/tools.tcl
|
||||||
|
set Opts(tools) 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Check for presence of the mazerouter script and include it
|
||||||
|
|
||||||
|
if {[file exists ${CAD_ROOT}/magic/tcl/mazeroute.tcl]} {
|
||||||
|
source ${CAD_ROOT}/magic/tcl/mazeroute.tcl
|
||||||
|
set Opts(mazeroute) 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Check for presence of the toolkit script and include it
|
||||||
|
# NOTE: This supercedes the older toolkit which is now
|
||||||
|
# named toolkit_rev0.tcl, and the intermediate bsitools.tcl,
|
||||||
|
# which are folded into the newer toolkit.tcl.
|
||||||
|
|
||||||
|
if {[file exists ${CAD_ROOT}/magic/tcl/toolkit.tcl]} {
|
||||||
|
source ${CAD_ROOT}/magic/tcl/toolkit.tcl
|
||||||
|
set Opts(toolkit) 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Magic start function drops back to interpreter after initialization & setup
|
||||||
|
|
||||||
|
set auto_noexec 1 ;# don't EVER call UNIX commands w/o "shell" in front
|
||||||
|
|
||||||
|
# Have we called magic from tkcon or a clone thereof? If so, set MagicConsole
|
||||||
|
|
||||||
|
if {[lsearch [interp aliases] tkcon] != -1} {
|
||||||
|
set MagicConsole tkcon
|
||||||
|
catch {wm withdraw .}
|
||||||
|
|
||||||
|
# Get rid of some overlapping tkcon commands which are not needed.
|
||||||
|
|
||||||
|
if {[lsearch [info commands] orig_edit] < 0} {rename edit orig_edit}
|
||||||
|
if {[lsearch [info commands] orig_dump] < 0} {rename dump orig_dump}
|
||||||
|
if {[lsearch [info commands] orig_what] < 0} {rename what orig_what}
|
||||||
|
} else {
|
||||||
|
rename unknown tcl_unknown
|
||||||
|
proc unknown { args } {
|
||||||
|
# CAD tools special:
|
||||||
|
# Check for commands which were renamed to tcl_(command)
|
||||||
|
|
||||||
|
set cmd [lindex $args 0]
|
||||||
|
if {[lsearch [info commands] tcl_$cmd] >= 0} {
|
||||||
|
set arglist [concat tcl_$cmd [lrange $args 1 end]]
|
||||||
|
set ret [catch {eval $arglist} result]
|
||||||
|
if {$ret == 0} {
|
||||||
|
return $result
|
||||||
|
} else {
|
||||||
|
return -code $ret -errorcode $errorCode $result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [eval [concat tcl_unknown $args]]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set up certain commands to act like they do in non-Tcl-based magic;
|
||||||
|
# These are the commands whose names have been extended so they don't
|
||||||
|
# conflict with existing Tcl/Tk commands. This renaming & importing
|
||||||
|
# *requires* the special code in the magic Tcl command dispatcher to
|
||||||
|
# find and deal with each of these renamed commands!
|
||||||
|
|
||||||
|
if {[lsearch [info commands] orig_clock] < 0} {rename clock orig_clock}
|
||||||
|
if {[lsearch [info commands] tcl_flush] < 0} {rename flush tcl_flush}
|
||||||
|
if {[lsearch [info commands] tcl_load] < 0} {rename load tcl_load}
|
||||||
|
if {[lsearch [info commands] tcl_array] < 0} {rename array tcl_array}
|
||||||
|
if {[lsearch [info commands] tcl_label] < 0} {catch {rename label tcl_label}}
|
||||||
|
if {[lsearch [info commands] tcl_grid] < 0} {catch {rename grid tcl_grid}}
|
||||||
|
|
||||||
|
namespace eval magic namespace export *
|
||||||
|
pushnamespace magic
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Read system startup files (mostly macro definitions)
|
||||||
|
# Read user startup file, if any
|
||||||
|
# Load initial cell, if any
|
||||||
|
|
||||||
|
magic::startup
|
||||||
|
|
||||||
|
if {![catch {set toptitle [wm title .]}]} {
|
||||||
|
if {[string range $toptitle 0 3] == "wish"} {
|
||||||
|
wm withdraw .
|
||||||
|
}
|
||||||
|
if {[string range $toptitle 0 8] == "magicexec"} {
|
||||||
|
wm withdraw .
|
||||||
|
}
|
||||||
|
unset toptitle
|
||||||
|
}
|
||||||
|
|
||||||
|
# After loading, magic will wander off and do a complete DRC check
|
||||||
|
# before executing the rest of the script unless we temporarily
|
||||||
|
# disable the DRC checker.
|
||||||
|
|
||||||
|
set drcstate [drc status]
|
||||||
|
drc off
|
||||||
|
|
||||||
|
# Initial window for wrapper, if defined.
|
||||||
|
# empty string is equivalent to passing NULL cell name.
|
||||||
|
#
|
||||||
|
# If a startup file has created a window, then don't make another one.
|
||||||
|
|
||||||
|
if {[info commands magic::openwrapper] != {}} {
|
||||||
|
if {[windownames layout] == {}} {
|
||||||
|
set winname [magic::openwrapper]
|
||||||
|
magic::techmanager initall
|
||||||
|
magic::scrollupdate $winname
|
||||||
|
|
||||||
|
foreach cellname $celllist {
|
||||||
|
set fext [file extension $cellname]
|
||||||
|
puts stdout "handling file entry $cellname extension $fext"
|
||||||
|
switch $fext {
|
||||||
|
.lef -
|
||||||
|
.LEF {lef read $cellname}
|
||||||
|
.def -
|
||||||
|
.DEF {def read $cellname}
|
||||||
|
.gds -
|
||||||
|
.GDS -
|
||||||
|
.gds2 -
|
||||||
|
.GDS2 -
|
||||||
|
.gdsii -
|
||||||
|
.GDSII {gds read $cellname}
|
||||||
|
.cif -
|
||||||
|
.CIF {cif read $cellname}
|
||||||
|
.tcl {source $cellname}
|
||||||
|
.mag -
|
||||||
|
"" {magic::load $cellname}
|
||||||
|
default {puts stderr "don't know how to load file $cellname"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# Initial geometry handler for the default window, non-wrapper version
|
||||||
|
catch {wm geometry .magic1 ${Opts(geometry)}}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Print the technology name and description
|
||||||
|
puts stdout "Using technology \"[tech name]\", version [lindex [tech version] 0]"
|
||||||
|
|
||||||
|
# Set a box, and set the view; if no cell has been loaded, choose a default
|
||||||
|
# view.
|
||||||
|
if {![box exists]} {
|
||||||
|
box 0 0 1 1 ;# create a unit box
|
||||||
|
}
|
||||||
|
if {[llength $celllist] > 0} {
|
||||||
|
view
|
||||||
|
} else {
|
||||||
|
view -9 -9 10 10
|
||||||
|
}
|
||||||
|
|
||||||
|
# The Tcl version handles the "-r" on the command line by calling
|
||||||
|
# command crash recover.
|
||||||
|
|
||||||
|
if {$do_recover} {crash recover}
|
||||||
|
|
||||||
|
# Unset global TCL variables so they don't conflict with magic nodes.
|
||||||
|
unset celllist nlist do_recover
|
||||||
|
|
||||||
|
if {$drcstate == 1} {
|
||||||
|
drc on
|
||||||
|
}
|
||||||
|
unset drcstate
|
||||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue