Commit 44b3412a authored by Ken Martin's avatar Ken Martin
Browse files

new vtk format

parent eb628944

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.
.git* export-ignore
install-sh crlf=input
#
# Config.mk --
#
# READ THIS FIRST: FILE PATH SPECIFICATION RULES.
#------------------------------------------------------------------------------
# All paths to files outside of the distribution MUST be fully specified
# paths (starting with /), e.g. /usr/local/lib/libtcl.a
#
# Fully specified paths to the Tcl and Tk librarys (libtcl.a/libtk.a)
# and the Tcl/Tk include files. You must edit these lines to point
# to the correct locations for your tcl/tk installations
TCL_INCLUDE=/common/software/tcl7.5/include
TCL_LIB=/common/software/tcl7.5/sun4/5.4/lib/libtcl7.5.a
TK_INCLUDE=/common/software/tk4.1/include
TK_LIB=/common/software/tk4.1/sun4/5.4/lib/libtk4.1.a
MESA_INCLUDE=/home/martink/storage/Mesa-1.2.6/include
MESA_LIB=/home/martink/storage/Mesa-1.2.6/lib/libMesaGL.a
#------------------------------------------------------------------------------
# C compiler and debug/optimization/profiling flag to use. Set by configure,
# and are normally overridden on the make command line (make CFLAGS=-g).
# They can also be overridden here.
#
# WARNING - if you specify -g the executables and libraries can get pretty
# big. You better really want that debug info.
#
# To change what compiler is used you should do something like
# setenv CC /my/compiler/cc
# setenv CXX /my/compiler/c++
#
# Then run the configure script. If you are not using a csh syntax then try
# set CC=/my/compiler/cc
# export CC
# set CXX=/my/compiler/c++
# export CXX
# instead.
AR = ar
CFLAGS=-O
CXXFLAGS=-O
#
# Makefile for Visualization Toolkit sources.
#
#------------------------------------------------------------------------------
#
SHELL = /bin/sh
.SUFFIXES: .cxx
#------------------------------------------------------------------------------
CXX_FLAGS = ${CPPFLAGS} ${VTK_SHLIB_CFLAGS} ${XCFLAGS} ${CXXFLAGS} \
${VTK_INLINE_FLAGS} ${VTK_TEMPLATE_FLAGS} -I${srcdir} \
${XGLR_FLAGS} ${OGLR_FLAGS} ${SBR_FLAGS} ${GLR_FLAGS} \
-I${srcdir}/../core -I${TK_INCLUDE} -I${TCL_INCLUDE} \
-D_HP_NO_FAST_MACROS ${HAVE_SETMON} ${WORDS_BIGENDIAN}
all: ${VTK_LIB_FILE} ${BUILD_TCL}
.cxx.o:
${CXX} ${CXX_FLAGS} -c $< -o $@
#------------------------------------------------------------------------------
# rules for the normal library
#
libVTK${ME}.a: ${SRC_OBJ} ${SBR_OBJ} ${XGLR_OBJ} ${OGLR_OBJ} ${GLR_OBJ}
${AR} cr libVTK${ME}.a ${SRC_OBJ} ${SBR_OBJ} ${XGLR_OBJ} ${OGLR_OBJ} ${GLR_OBJ}
${RANLIB} libVTK$(ME).a
libVTK$(ME)$(SHLIB_SUFFIX)$(SHLIB_VERSION): ${SRC_OBJ} ${SBR_OBJ} ${XGLR_OBJ} ${OGLR_OBJ} ${GLR_OBJ}
rm -f libVTK$(ME)$(SHLIB_SUFFIX)$(SHLIB_VERSION)
$(SHLIB_LD) -o libVTK$(ME)$(SHLIB_SUFFIX)$(SHLIB_VERSION) \
${SRC_OBJ} ${SBR_OBJ} ${XGLR_OBJ} ${OGLR_OBJ} ${GLR_OBJ} ${SHLIB_LD_LIBS}
#------------------------------------------------------------------------------
# rules for the tcl library
#
build_tcl: ${TCL_LIB_FILE}
tcl/${ME}Init.cxx: ../tcl/kit_init ${TCL_NEWS}
../tcl/kit_init VTK${ME}Tcl ${TCL_NEWS} > tcl/${ME}Init.cxx
libVTK${ME}Tcl.a: tcl/${ME}Init.o ${KIT_LIBS} ${SRC_OBJ} ${TCL_OBJ} ${SBR_OBJ} ${XGLR_OBJ} ${OGLR_OBJ} ${GLR_OBJ}
${AR} cr libVTK${ME}Tcl.a tcl/${ME}Init.o ${KIT_LIBS} ${TCL_OBJ} ${SRC_OBJ} ${SBR_OBJ} ${XGLR_OBJ} ${OGLR_OBJ} ${GLR_OBJ}
${RANLIB} libVTK$(ME)Tcl.a
libVTK$(ME)Tcl$(SHLIB_SUFFIX)$(SHLIB_VERSION): tcl/${ME}Init.o ${KIT_LIBS} ${TCL_OBJ} $(SRC_OBJ) ${SBR_OBJ} ${XGLR_OBJ} ${OGLR_OBJ} ${GLR_OBJ}
rm -f libVTK$(ME)Tcl$(SHLIB_SUFFIX)$(SHLIB_VERSION)
$(SHLIB_LD) -o libVTK$(ME)Tcl$(SHLIB_SUFFIX)$(SHLIB_VERSION) \
tcl/${ME}Init.o ${KIT_LIBS} ${TCL_OBJ} ${SRC_OBJ} ${SBR_OBJ} ${XGLR_OBJ} ${OGLR_OBJ} ${GLR_OBJ} ${SHLIB_LD_LIBS}
#------------------------------------------------------------------------------
depend:
$(CXX) -MM $(CPPFLAGS) $(CXX_FLAGS) $(srcdir)/*.cxx > depend.make
#------------------------------------------------------------------------------
clean: ${CLEAN_TCL}
-rm -f *.o *.a *.so *.sl *~ *.make Makefile
clean_tcl:
-cd tcl; rm -f *
#
# Makefile --
#
# Top-level makefile for the Visualization Toolkit
#
#------------------------------------------------------------------------------
#
SHELL=/bin/sh
#------------------------------------------------------------------------------
# Autoconfig defines that can be overridden in Config.mk
srcdir = @srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
BUILD_TCL = @BUILD_TCL@
CLEAN_TCL = @CLEAN_TCL@
BUILD_VIS = @BUILD_VIS@
CLEAN_VIS = @CLEAN_VIS@
#------------------------------------------------------------------------------
# Include user-editable defines.
@MAKEINCLUDE@ @MAKEQUOTE@Config.mk@MAKEQUOTE@
#------------------------------------------------------------------------------
all: ${BUILD_TCL} build_core ${BUILD_VIS} ${BUILD_TCL}${BUILD_TCL}
build_core:
cd core; ${MAKE} -${MAKEFLAGS} all
build_vis:
cd vis; ${MAKE} -${MAKEFLAGS} all
build_tcl:
cd tcl; ${MAKE} -${MAKEFLAGS} all
# tcl part2
build_tclbuild_tcl:
cd tcl; ${MAKE} -${MAKEFLAGS} vtk
#------------------------------------------------------------------------------
# Clean up all files that were built by make.
clean: ${CLEAN_TCL} ${CLEAN_VIS}
cd core; ${MAKE} -${MAKEFLAGS} clean
rm -f config.cache
clean_tcl:
cd tcl; ${MAKE} -${MAKEFLAGS} clean
clean_vis:
cd vis; ${MAKE} -${MAKEFLAGS} clean
OGLR_LIBS = ${MESA_LIB}
OGLR_FLAGS = -I${MESA_INCLUDE} -DUSE_OGLR
OGLR_OBJ = \
vtkOglrActor.o \
vtkOglrCamera.o \
vtkOglrLight.o \
vtkOglrPolyMapper.o \
vtkOglrProperty.o \
vtkOglrRenderWindow.o \
vtkOglrRenderer.o \
vtkOglrTexture.o
TCL_OGLR_OBJ = \
tclvtkOglrActor.hh.o \
tclvtkOglrCamera.hh.o \
tclvtkOglrLight.hh.o \
tclvtkOglrPolyMapper.hh.o \
tclvtkOglrProperty.hh.o \
tclvtkOglrRenderWindow.hh.o \
tclvtkOglrRenderer.hh.o \
tclvtkOglrTexture.hh.o \
tclGNewOglr.o
GLR_LIBS = -lgl
GLR_FLAGS = -DUSE_GLR
GLR_OBJ = \
vtkGlrActor.o \
vtkGlrCamera.o \
vtkGlrLight.o \
vtkGlrPolyMapper.o \
vtkGlrProperty.o \
vtkGlrRenderWindow.o \
vtkGlrRenderer.o \
vtkGlrTexture.o
TCL_GLR_OBJ = \
tclvtkGlrActor.hh.o \
tclvtkGlrCamera.hh.o \
tclvtkGlrLight.hh.o \
tclvtkGlrPolyMapper.hh.o \
tclvtkGlrProperty.hh.o \
tclvtkGlrRenderWindow.hh.o \
tclvtkGlrRenderer.hh.o \
tclvtkGlrTexture.hh.o \
tclGNewGlr.o
OGLR_LIBS = -lGL
OGLR_FLAGS = -DUSE_OGLR
OGLR_OBJ = \
vtkOglrActor.o \
vtkOglrCamera.o \
vtkOglrLight.o \
vtkOglrPolyMapper.o \
vtkOglrProperty.o \
vtkOglrRenderWindow.o \
vtkOglrRenderer.o \
vtkOglrTexture.o
TCL_OGLR_OBJ = \
tclvtkOglrActor.hh.o \
tclvtkOglrCamera.hh.o \
tclvtkOglrLight.hh.o \
tclvtkOglrPolyMapper.hh.o \
tclvtkOglrProperty.hh.o \
tclvtkOglrRenderWindow.hh.o \
tclvtkOglrRenderer.hh.o \
tclvtkOglrTexture.hh.o \
tclGNewOglr.o
SBR_LIBS = -ldld -lXwindow -lsb -lXhp11
SBR_FLAGS = -DUSE_SBR
SBR_OBJ = \
vtkSbrActor.o \
vtkSbrCamera.o \
vtkSbrLight.o \
vtkSbrPolyMapper.o \
vtkSbrProperty.o \
vtkSbrRenderWindow.o \
vtkSbrRenderer.o \
vtkSbrTexture.o
TCL_SBR_OBJ = \
tclvtkSbrActor.hh.o \
tclvtkSbrCamera.hh.o \
tclvtkSbrLight.hh.o \
tclvtkSbrPolyMapper.hh.o \
tclvtkSbrProperty.hh.o \
tclvtkSbrRenderWindow.hh.o \
tclvtkSbrRenderer.hh.o \
tclvtkSbrTexture.hh.o \
tclGNewSbr.o
XGLR_LIBS = -L${XGL_HOME}/lib -lxgl
XGLR_FLAGS = -I${XGL_HOME}/include -DUSE_XGLR
XGLR_OBJ = \
vtkXglrActor.o \
vtkXglrCamera.o \
vtkXglrLight.o \
vtkXglrPolyMapper.o \
vtkXglrProperty.o \
vtkXglrRenderWindow.o \
vtkXglrRenderer.o \
vtkXglrTexture.o
TCL_XGLR_OBJ = \
tclvtkXglrActor.hh.o \
tclvtkXglrCamera.hh.o \
tclvtkXglrLight.hh.o \
tclvtkXglrPolyMapper.hh.o \
tclvtkXglrProperty.hh.o \
tclvtkXglrRenderWindow.hh.o \
tclvtkXglrRenderer.hh.o \
tclvtkXglrTexture.hh.o \
tclGNewXglr.o
#
# vtk library makefile
#
# NOTE !!! when adding a class, it must be added in four locations
# It must be in the SRC_OBJ list, TCL_OBJ list and TCL_RULES
# If it is a concrete class then it should be added to TCL_NEWS
# as well.
#
ME = Core
# put all vtkFoo.cxx files here as .o files
SRC_OBJ = \
vtkCollection.o \
vtkIndent.o \
vtkObject.o \
vtkRefCount.o \
vtkTimeStamp.o
# put all vtk classes that are to be wrapped here as tcl/vtkFooTcl.o files
TCL_OBJ = \
tcl/vtkCollectionTcl.o \
tcl/vtkIndentTcl.o \
tcl/vtkObjectTcl.o \
tcl/vtkRefCountTcl.o \
tcl/vtkTimeStampTcl.o
# put all vtk classes that are concrete here as vtkFooTcl.h files
TCL_NEWS = \
vtkCollection.h \
vtkIndent.h \
vtkObject.h \
vtkRefCount.h \
vtkTimeStamp.h
# add in any extra libraies here
KIT_LIBS = vtkTclUtil.o
# The following is all boiler plate
#------------------------------------------------------------------------------
# Autoconfig defines that can be overridden in Config.mk
CC = @CC@
CFLAGS = @CFLAGS@
CXX = @CXX@
CXXFLAGS = @CXXFLAGS@
XCFLAGS = @X_CFLAGS@
XLIBS = @X_LIBS@
RANLIB = @RANLIB@
srcdir = @srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
XGL_HOME = @XGL_HOME@
HAVE_SETMON = @HAVE_SETMON@
WORDS_BIGENDIAN = @BIGENDIAN@
VTK_SHLIB_CFLAGS = @VTK_SHLIB_CFLAGS@
SHLIB_LD = @SHLIB_LD@
SHLIB_LD_LIBS = @SHLIB_LD_LIBS@
SHLIB_SUFFIX = @SHLIB_SUFFIX@
SHLIB_VERSION = @SHLIB_VERSION@
VTK_LIB_FILE = libVTK${ME}@VTK_LIB_EXT@
TCL_LIB_FILE = libVTK${ME}Tcl@VTK_LIB_EXT@
VTK_TEMPLATE_FLAGS = @VTK_TEMPLATE_FLAGS@
VTK_INLINE_FLAGS = @VTK_INLINE_FLAGS@
BUILD_TCL = @BUILD_TCL@
CLEAN_TCL = @CLEAN_TCL@
#------------------------------------------------------------------------------
# Include user-editable defines.
@MAKEINCLUDE@ @MAKEQUOTE@../Config.mk@MAKEQUOTE@
#------------------------------------------------------------------------------
# Include the generic stuff here
@MAKEINCLUDE@ @MAKEQUOTE@../Kits.make@MAKEQUOTE@
#------------------------------------------------------------------------------
# Include the depend stuff here
@MAKEINCLUDE@ @MAKEQUOTE@depend.make@MAKEQUOTE@
#------------------------------------------------------------------------------
# all Tcl wrapped classes need a line here
#
# concrete classes will pass the last argument of 1 abstract will be 0.
#
tcl/vtkCollectionTcl.cxx: vtkCollection.h ../tcl/cpp_parse
rm -f tcl/vtkCollectionTcl.cxx; ../tcl/cpp_parse $(srcdir)/vtkCollection.h $(srcdir)/../tcl/hints 1 > tcl/vtkCollectionTcl.cxx
tcl/vtkObjectTcl.cxx: vtkObject.h ../tcl/cpp_parse
rm -f tcl/vtkObjectTcl.cxx; ../tcl/cpp_parse $(srcdir)/vtkObject.h $(srcdir)/../tcl/hints 1 > tcl/vtkObjectTcl.cxx
tcl/vtkIndentTcl.cxx: vtkIndent.h ../tcl/cpp_parse
rm -f tcl/vtkIndentTcl.cxx; ../tcl/cpp_parse $(srcdir)/vtkIndent.h $(srcdir)/../tcl/hints 1 > tcl/vtkIndentTcl.cxx
tcl/vtkTimeStampTcl.cxx: vtkTimeStamp.h ../tcl/cpp_parse
rm -f tcl/vtkTimeStampTcl.cxx; ../tcl/cpp_parse $(srcdir)/vtkTimeStamp.h $(srcdir)/../tcl/hints 1 > tcl/vtkTimeStampTcl.cxx
tcl/vtkRefCountTcl.cxx: vtkRefCount.h ../tcl/cpp_parse
rm -f tcl/vtkRefCountTcl.cxx; ../tcl/cpp_parse $(srcdir)/vtkRefCount.h $(srcdir)/../tcl/hints 1 > tcl/vtkRefCountTcl.cxx
#
# configure script for vtk source directory
#
AC_INIT(vtkObject.cxx)
#
# check for some programs we use
#
AC_PROG_CC
AC_PROG_CXX
AC_PROG_RANLIB
AC_PROG_LN_S
AC_CONFIG_SUBDIRS(tcl)
AC_ISC_POSIX
#
# Checks for header files.
#
AC_HEADER_STDC
#
# figure out what graphics we should compile in based on header files
#
AC_CHECK_HEADERS(starbase.c.h, sbr_obj=$srcdir/../Makefile.in.sbr)
AC_SUBST_FILE(sbr_obj)
AC_CHECK_HEADERS(gl/gl.h, glr_obj=$srcdir/../Makefile.in.glr)
AC_SUBST_FILE(glr_obj)
AC_ARG_WITH(tcl,
[ --with-tcl build vtk the tcl based interpreter],
BUILD_TCL=build_tcl
CLEAN_TCL=clean_tcl)
AC_SUBST(BUILD_TCL)
AC_SUBST(CLEAN_TCL)
#
# use mesa
#
AC_ARG_WITH(mesa,
[ --with-mesa use the mesa opengl package],
oglr_obj=$srcdir/../Makefile.in.Mesaoglr)
AC_CHECK_HEADERS(GL/gl.h, oglr_obj=$srcdir/../Makefile.in.oglr)
AC_SUBST_FILE(oglr_obj)
#
# has the user set up XGL_HOME
#
if test "X$XGL_HOME" = "X" ; then
XGL_HOME=/opt/SUNWits/Graphics-sw/xgl
fi
AC_CHECK_HEADERS($XGL_HOME/include/xgl/xgl.h, xglr_obj=$srcdir/../Makefile.in.xglr)
AC_SUBST_FILE(xglr_obj)
AC_SUBST(XGL_HOME)
ac_save_path="$PATH"
PATH=/usr/gfx
AC_CHECK_PROG(HAVE_SETMON, setmon, -DHAVE_SETMON)
PATH="$ac_save_path"
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_STRUCT_TM
# Find the X include directories and libraries
AC_PATH_XTRA
# get byte swapping info
AC_C_BIGENDIAN
if test $ac_cv_c_bigendian = yes; then
BIGENDIAN="-DWORDS_BIGENDIAN"
fi
AC_SUBST(BIGENDIAN)
#------------------------------------------------------------------------------
# Some make programs require includes to be
# .include "file"
# others...
# include file
#------------------------------------------------------------------------------
AC_MSG_CHECKING(how make handles includes)
cat > confmakeinc <<EOF
EOF
cat > confmakefile <<EOF
include confmakeinc
all:
EOF
if make -f confmakefile >/dev/null 2>/dev/null; then
MAKEINCLUDE="include"
MAKEQUOTE=''
AC_MSG_RESULT(common make include syntax)
else
MAKEINCLUDE=".include"
MAKEQUOTE='"'
AC_MSG_RESULT(BSD make include syntax)
fi
rm confmakefile confmakeinc
AC_SUBST(MAKEINCLUDE)
AC_SUBST(MAKEQUOTE)
# the following is an excerpt from the tcl7.5b2 configure.in
#--------------------------------------------------------------------
# The statements below define a collection of symbols related to
# dynamic loading and shared libraries:
#
# SHLIB_CFLAGS - Flags to pass to cc when compiling the components
# of a shared library (may request position-independent
# code, among other things).
# SHLIB_LD - Base command to use for combining object files
# into a shared library.
# SHLIB_LD_LIBS - Dependent libraries for the linker to scan when
# creating shared libraries. This symbol typically
# goes at the end of the "ld" commands that build
# shared libraries. The value of the symbol if
# "${LIBS}" if all of the dependent libraries should
# be specified when creating a shared library. If
# dependent libraries should not be specified (as on
# SunOS 4.x, where they cause the link to fail, or in
# general if Tcl and Tk aren't themselves shared
# libraries), then this symbol has an empty string
# as its value.
# SHLIB_SUFFIX - Suffix to use for the name of the shared library. An
# empty string means we don't know how to use shared
# libraries on this platform.
# SHLIB_VERSION - If this platform *requires* shared libraries to end
# in a version string, this provides a default version
# string to use; it is an empty string on platforms
# where it isn't needed.
# LD_FLAGS - Flags to pass to the compiler when linking object
# files into an executable application binary such
# as tclsh.
# LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib",
# that tell the run-time dynamic linker where to look
# for shared libraries such as libtcl.so. Depends on
# the variable LIB_INSTALL_DIR in the Makefile.
#--------------------------------------------------------------------
# Step 1: set the variable "system" to hold the name and version number
# for the system. This can usually be done via the "uname" command, but
# there are a few systems, like Next, where this doesn't work.
AC_MSG_CHECKING([system version (for dynamic loading)])
if test -f /usr/lib/NextStep/software_version; then
system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
else
system=`uname -s`-`uname -r`
if test "$?" -ne 0 ; then
AC_MSG_RESULT([unknown (can't find uname command)])
system=unknown
else
# Special check for weird MP-RAS system (uname returns weird
# results, and the version is kept in special file).
if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
system=MP-RAS-`awk '{print $3}' /etc/.relid'`
fi
AC_MSG_RESULT($system)
fi
fi
# Step 2: check for existence of -ldl library. This is needed because
# Linux can use either -ldl or -ldld for dynamic loading.
AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
# Step 3: disable dynamic loading if requested via a command-line switch.
AC_ARG_ENABLE(load, [ --disable-load disallow dynamic loading and "load" command],
[tcl_ok=$enableval], [tcl_ok=yes])
if test "$tcl_ok" = "no"; then
system=unknown
fi
# Step 4: set configuration options based on system name and version.
fullSrcDir=`cd $srcdir; pwd`
mustUseSharedLibs=no
case $system in
AIX-*)
# AIX: can't link shared library extensions unless Tcl and Tk are
# also shared libraries.
mustUseSharedLibs=yes
SHLIB_CFLAGS=""
SHLIB_LD="$fullSrcDir/ldAix /bin/ld -e _nostart -berok -bM:SRE -bE:lib.exp -H512 -T512"
SHLIB_LD_LIBS='${LIBS}'
SHLIB_SUFFIX="..o"
SHLIB_VERSION=""
DL_LIBS=""
LD_FLAGS=""
LD_SEARCH_FLAGS=""
;;
HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
SHLIB_CFLAGS="+z"
SHLIB_LD="ld -b"
SHLIB_LD_LIBS=""
SHLIB_SUFFIX=".sl"
SHLIB_VERSION=""
DL_LIBS="-ldld"
LD_FLAGS="-Wl,-E"
LD_SEARCH_FLAGS='-Wl,+b,${LIB_INSTALL_DIR}'
;;
IRIX-4.*)
SHLIB_CFLAGS="-G 0"
SHLIB_SUFFIX="..o"
SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | tclsh -r -G 0"
SHLIB_LD_LIBS=""
SHLIB_VERSION=""
DL_LIBS=""
LD_FLAGS="-Wl,-D,08000000"
LD_SEARCH_FLAGS='-rpath ${LIB_INSTALL_DIR}'
;;
IRIX-5.*)
SHLIB_CFLAGS=""
SHLIB_LD="ld -shared -rdata_shared"
SHLIB_LD_LIBS=""
SHLIB_SUFFIX=".so"
SHLIB_VERSION=""
DL_LIBS=""
LD_FLAGS=""
LD_SEARCH_FLAGS=""
;;
Linux*)
SHLIB_CFLAGS="-fPIC"
SHLIB_LD_LIBS=""
SHLIB_SUFFIX=".so"
SHLIB_VERSION=""
if test "$have_dl" = yes; then
SHLIB_LD="${CC} -shared"
DL_LIBS="-ldl"
LD_FLAGS="-rdynamic"
LD_SEARCH_FLAGS=""
else
AC_CHECK_HEADER(dld.h, [
SHLIB_LD="ld -shared"