mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-08 10:13:36 -08:00
Patches for building ECL using the Microsoft Visual C++ Toolkit 2003
This commit is contained in:
parent
ef15c97154
commit
bd283f5a2b
1 changed files with 323 additions and 0 deletions
323
msvc/Makefile
Normal file
323
msvc/Makefile
Normal file
|
|
@ -0,0 +1,323 @@
|
|||
#
|
||||
# Makefile for ECoLisp
|
||||
#
|
||||
top_srcdir= ..\src
|
||||
srcdir = ..\src
|
||||
|
||||
# =============================================================
|
||||
# ECL configuration
|
||||
# <BEGIN>
|
||||
|
||||
SHORT_SITE_NAME =
|
||||
LONG_SITE_NAME =
|
||||
ECL_VERSION = 0.9f
|
||||
ARCHITECTURE = PENTIUM4
|
||||
MACHINE_INSTANCE = localhost
|
||||
MACHINE =
|
||||
SOFTWARE_TYPE = NT
|
||||
SOFTWARE_VERSION = 5.0
|
||||
THEHOST = win32
|
||||
|
||||
# Define here the processor type to compile GMP library
|
||||
# with maximum optimization. Possible values are:
|
||||
# gc -> generic implementation
|
||||
# p0 -> Pentium processor
|
||||
# p3 -> Pentium III processor
|
||||
# p4 -> Pentium IV processor
|
||||
GMP_TYPE = gc
|
||||
|
||||
# Set it to non-empty to include Win32 thread support
|
||||
ECL_THREADS =
|
||||
|
||||
# Add the extensions to include in the build process. Current
|
||||
# extensions are: asdf
|
||||
ECL_MODULES = asdf
|
||||
|
||||
# <END> (ECL configuration)
|
||||
# =============================================================
|
||||
|
||||
TAR_DIR = %%CD%%\ecl-$(ECL_VERSION)
|
||||
|
||||
# Programs used by "make":
|
||||
#
|
||||
|
||||
CC = cl
|
||||
CFLAGS = /MD /DGC_NOT_DLL
|
||||
LIBS = eclgc.lib eclgmp.lib user32.lib ws2_32.lib
|
||||
LDFLAGS = -MD -Zi
|
||||
RM = del
|
||||
RMDIR = rmdir /Q /S
|
||||
MKDIR = mkdir
|
||||
EXE = .exe
|
||||
CP = copy /Y
|
||||
MV = move /Y
|
||||
MSDEV = msdev
|
||||
MKNSI = makensis.exe
|
||||
|
||||
# ==================== Where To Install Things ====================
|
||||
|
||||
# The default location for installation. Everything is placed in
|
||||
# subdirectories of this directory. The default values for many of
|
||||
# the variables below are expressed in terms of this one, so you may
|
||||
# not need to change them. This defaults to /usr/local.
|
||||
prefix=D:\Software\ECL
|
||||
exec_prefix=$(prefix)
|
||||
bindir=$(prefix)\bin
|
||||
libdir=$(prefix)\lib\ecl
|
||||
|
||||
# Programs used by "make install":
|
||||
#
|
||||
SHELL = @SHELL@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/gc/mkinstalldirs
|
||||
|
||||
# Files
|
||||
#
|
||||
SUBDIR = c gc gmp
|
||||
LIBRARIES =
|
||||
LSP_LIBRARIES = cmp.fas clx.fas sockets.fas sysfun.lsp
|
||||
TARGETS = ecl$(EXE)
|
||||
DEF = ecl.def
|
||||
|
||||
# Additional configuration for thread support
|
||||
#
|
||||
!if "$(ECL_THREADS)" == ""
|
||||
ENV_EXPORT = cl_env,DATA
|
||||
!else
|
||||
ENV_EXPORT = ecl_process_env
|
||||
CFLAGS = $(CFLAGS) -DECL_THREADS
|
||||
DEF = ecl-threads.def
|
||||
!endif
|
||||
|
||||
# Build rules
|
||||
#
|
||||
all: $(TARGETS) doc ecl-config.bat
|
||||
.PHONY: all
|
||||
|
||||
%Makefile: $(srcdir)/%Makefile.in config.status
|
||||
./config.status
|
||||
|
||||
c\cut$(EXE):
|
||||
cd c
|
||||
$(MAKE) cut$(EXE)
|
||||
|
||||
$(TARGETS): ecl_min$(EXE) compile.lsp sysfun.lsp
|
||||
.\ecl_min < compile.lsp
|
||||
|
||||
ecl-static.lib: $(TARGETS)
|
||||
link -lib -out:$@ eclmin.lib c\all_symbols2.obj lsp.lib eclgmp.lib eclgc.lib
|
||||
|
||||
ecl_min$(EXE): $(LIBRARIES) eclmin.lib
|
||||
$(CC) $(LDFLAGS) /Fe$@ cinit.obj c\all_symbols.obj eclmin.lib $(LIBS)
|
||||
|
||||
.gdbinit: $(srcdir)\util\gdbinit
|
||||
$(CP) $(srcdir)\util\gdbinit $@
|
||||
|
||||
lsp/config.lsp: $(srcdir)/lsp/config.lsp.in Makefile c\cut$(EXE)
|
||||
if not exist lsp $(MKDIR) lsp
|
||||
c\cut "@ecldir@" "$(libdir:\=/)" \
|
||||
"@SHORT_SITE_NAME@" "$(SHORT_SITE_NAME)" \
|
||||
"@LONG_SITE_NAME@" "$(LONG_SITE_NAME)" \
|
||||
"@PACKAGE_VERSION@" "$(ECL_VERSION)" \
|
||||
"@ARCHITECTURE@" "$(ARCHITECTURE)" \
|
||||
"@MACHINE_INSTANCE@" "$(MACHINE_INSTANCE)" \
|
||||
"@MACHINE_VERSION@" "$(MACHINE)" \
|
||||
"@SOFTWARE_TYPE@" "$(SOFTWARE_TYPE)" \
|
||||
"@SOFTWARE_VERSION@" "$(SOFTWARE_VERSION)" \
|
||||
"@thehost@" "$(THEHOST)" \
|
||||
< $(srcdir)\lsp\config.lsp.in > lsp\config.lsp
|
||||
compile.lsp: bare.lsp $(srcdir)/compile.lsp.in Makefile
|
||||
c\cut "@ecldir@" "$(libdir:\=/)" \
|
||||
"@true_srcdir@" "$(srcdir:\=/)" \
|
||||
"@true_builddir@" "$(MAKEDIR:\=/)" \
|
||||
"@CFLAGS@" "$(CFLAGS)" \
|
||||
"@ECL_CFLAGS@" "" \
|
||||
"@CPPFLAGS@" "" \
|
||||
"@LDRPATH@" "" \
|
||||
"@LDFLAGS@" "/MD /link /LIBPATH:~S" \
|
||||
"@SHARED_LDFLAGS@" "/LDd" \
|
||||
"@BUNDLE_LDFLAGS@" "/LDd" \
|
||||
"@CLIBS@" "user32.lib ws2_32.lib" \
|
||||
"@STATICLIBS@" "eclgmp.lib eclgc.lib" \
|
||||
"@LIBS@" "user32.lib ws2_32.lib" \
|
||||
"@CORE_LIBS@" "" \
|
||||
"@FASL_LIBS@" "" \
|
||||
"@OBJEXT@" "obj" \
|
||||
"@SHAREDPREFIX@" "" \
|
||||
"@SHAREDEXT@" "lib" \
|
||||
"@LIBPREFIX@" "" \
|
||||
"@LIBEXT@" "lib" \
|
||||
"@EXEEXT@" ".exe" \
|
||||
"@LDINSTALLNAME@" "" \
|
||||
"@DEF@" "$(DEF)" \
|
||||
"@ECL_MODULES@" "$(ECL_MODULES)" \
|
||||
"@RANLIB@" "ranlib" \
|
||||
< $(srcdir)\compile.lsp.in > compile.lsp
|
||||
bare.lsp: $(srcdir)/bare.lsp.in lsp/load.lsp clos/load.lsp cmp/load.lsp cmp/cmpcfg.lsp
|
||||
c\cut "@true_srcdir@" "$(srcdir:\=/)" \
|
||||
"@true_builddir@" "$(MAKEDIR:\=/)" < $(srcdir)\bare.lsp.in > bare.lsp
|
||||
lsp/load.lsp: $(srcdir)/lsp/load.lsp.in
|
||||
$(CP) $(srcdir)\lsp\load.lsp.in lsp\load.lsp
|
||||
clos/load.lsp: $(srcdir)/clos/load.lsp.in
|
||||
if not exist clos $(MKDIR) clos
|
||||
$(CP) $(srcdir)\clos\load.lsp.in clos\load.lsp
|
||||
cmp/load.lsp: $(srcdir)/cmp/load.lsp.in
|
||||
if not exist cmp $(MKDIR) cmp
|
||||
$(CP) $(srcdir)\cmp\load.lsp.in cmp\load.lsp
|
||||
cmp/cmpcfg.lsp: $(srcdir)/cmp/cmpcfg.lsp.in Makefile
|
||||
c\cut "@ECL_CC@" "$(CC)" \
|
||||
"@CFLAGS@" "$(CFLAGS)" \
|
||||
"@ECL_CFLAGS@" "" \
|
||||
"@CPPFLAGS@" "" \
|
||||
"@LDRPATH@" "" \
|
||||
"@LDFLAGS@" "/MD /link /LIBPATH:~S" \
|
||||
"@SHARED_LDFLAGS@" "/LDd" \
|
||||
"@BUNDLE_LDFLAGS@" "/LDd" \
|
||||
"@CLIBS@" "user32.lib ws2_32.lib" \
|
||||
"@STATICLIBS@" "eclgmp.lib eclgc.lib" \
|
||||
"@OBJEXT@" "obj" \
|
||||
"@SHAREDPREFIX@" "" \
|
||||
"@SHAREDEXT@" "dll" \
|
||||
"@LIBPREFIX@" "" \
|
||||
"@LIBEXT@" "lib" \
|
||||
"@EXEEXT@" ".exe" \
|
||||
< $(srcdir)\cmp\cmpcfg.lsp.in > cmp\cmpcfg.lsp
|
||||
ecl-config.bat: util\ecl-config.bat Makefile
|
||||
c\cut "~A" "$(libdir:\=/)"\
|
||||
"~*" "" \
|
||||
"@ECL_CFLAGS@" "$(CFLAGS)" \
|
||||
"@LDFLAGS@" "" \
|
||||
"@CLIBS@" "" \
|
||||
"@libdir@" "$(libdir:\=/)" \
|
||||
"@includedir@" "$(libdir:\=/)/h" \
|
||||
< util\ecl-config.bat > ecl-config.bat
|
||||
|
||||
|
||||
eclmin.lib: eclgmp.lib eclgc.lib lsp/config.lsp
|
||||
cd c
|
||||
$(MAKE) "ECL_THREADS = $(ECL_THREADS)"
|
||||
cd ..
|
||||
eclgc.lib:
|
||||
cd gc
|
||||
$(MAKE) nodebug=1 "ECL_THREADS = $(ECL_THREADS)" gc.lib
|
||||
$(CP) gc.lib ..\eclgc.lib
|
||||
cd ..
|
||||
for %h in (gc.h gc_local_alloc.h gc_pthread_redirects.h \
|
||||
gc_config_macros.h leak_detector.h gc_typed.h) \
|
||||
do $(CP) $(srcdir)\gc\include\%h h\%h
|
||||
eclgmp.lib:
|
||||
cd gmp
|
||||
$(MAKE) "MPN_TYPE = $(GMP_TYPE)"
|
||||
$(CP) gmp.lib ..\eclgmp.lib
|
||||
$(CP) gmp.h ..\h\gmp.h
|
||||
cd ..
|
||||
sysfun.lsp:
|
||||
$(CP) $(srcdir)\cmp\sysfun.lsp .\
|
||||
|
||||
rt.lisp:
|
||||
$(CP) $(srcdir)\..\contrib\rt\rt.lisp .\
|
||||
|
||||
install: install-base
|
||||
for %h in (gc.h gc_local_alloc.h gc_pthread_redirects.h \
|
||||
gc_config_macros.h leak_detector.h gc_typed.h) \
|
||||
do $(CP) h\%h $(libdir)\h
|
||||
$(CP) h\gmp.h $(libdir)\h\gmp.h
|
||||
cd c
|
||||
$(MAKE) install "prefix=$(prefix)"
|
||||
cd ..\doc
|
||||
$(MAKE) install "prefix=$(prefix)"
|
||||
install-base:
|
||||
IF NOT EXIST $(bindir) $(MKDIR) $(bindir)
|
||||
IF NOT EXIST $(libdir)\h $(MKDIR) $(libdir)\h
|
||||
for %i in ($(TARGETS) ecl.dll) do $(CP) %i $(bindir)\%i
|
||||
IF EXIST $(bindir)\ecl2$(EXE) $(MV) $(bindir)\ecl2$(EXE) $(bindir)\ecl$(EXE)
|
||||
$(CP) ecl-config.bat $(bindir)\ecl-config.bat
|
||||
for %i in ($(LSP_LIBRARIES) $(LIBRARIES) c\dpp.exe help.doc ecl.lib) do $(CP) %i $(libdir)
|
||||
for %i in ($(ECL_MODULES)) do $(CP) %i.fas $(libdir)
|
||||
for %i in (ecl-static.lib) do IF EXIST %i $(CP) %i $(libdir)
|
||||
$(CP) h\config.h $(libdir)\h
|
||||
flatinstall:
|
||||
$(MAKE) bindir=$(prefix) libdir=$(prefix) install-base
|
||||
cd c
|
||||
$(MAKE) prefix=$(prefix) flatinstall
|
||||
cd ..\doc
|
||||
$(MAKE) prefix=$(prefix) flatinstall
|
||||
cd ..
|
||||
|
||||
windows-nsi:
|
||||
IF EXIST $(TAR_DIR) $(RMDIR) $(TAR_DIR)
|
||||
$(MKDIR) $(TAR_DIR)
|
||||
$(MAKE) flatinstall prefix=$(TAR_DIR)
|
||||
util\ecl_nsi.bat %%CD%%\$(srcdir)\util\ecl.nsi $(TAR_DIR)
|
||||
$(MKNSI) $(TAR_DIR)/ecl.nsi
|
||||
$(MV) $(TAR_DIR)\Setup.exe ecl-$(ECL_VERSION).exe
|
||||
$(RMDIR) $(TAR_DIR)
|
||||
|
||||
uninstall:
|
||||
for i in $(TARGETS) ecl-config; do rm -rf $(bindir)/$$i; done
|
||||
rm -rf $(libdir)
|
||||
cd doc; $(MAKE) uninstall
|
||||
|
||||
doc: $(TARGETS)
|
||||
cd doc
|
||||
$(MAKE)
|
||||
cd ..
|
||||
|
||||
clean: clean_ecl clean_lisp clean_doc
|
||||
-$(RM) .gdbinit
|
||||
cd gc
|
||||
-$(MAKE) "ECL_THREADS = $(ECL_THREADS)" clean
|
||||
cd ..
|
||||
-for %h in (gc.h gc_local_alloc.h gc_pthread_redirects.h \
|
||||
gc_config_macros.h leak_detector.h gc_typed.h) \
|
||||
do $(RM) h\%h
|
||||
cd gmp
|
||||
$(MAKE) "ECL_THREADS = $(ECL_THREADS)" clean
|
||||
cd ..
|
||||
-$(RM) h\gmp.h
|
||||
clean_ecl:
|
||||
-for %i in (eclgc.lib eclgmp.lib lsp\config.lsp compile.lsp bare.lsp \
|
||||
lsp\load.lsp clos\load.lsp cmp\load.lsp cmp\cmpcfg.lsp \
|
||||
ecl.lib ecl.dll ecl_min$(EXE) eclmin.lib help.doc sysfun.lsp \
|
||||
$(TARGETS) *.exp *.ilk *.pdb *.c *.obj ecl-config.bat ecl-static.lib) \
|
||||
do $(RM) %i
|
||||
cd c
|
||||
-$(MAKE) "ECL_THREADS = $(ECL_THREADS)" clean
|
||||
cd ..
|
||||
clean_lisp:
|
||||
-for %i in (lsp cmp clos clx tk $(ECL_MODULES) sockets) do for %k in (%i.lib %i.fas %i.ilk %i.c %i.obj %i.pdb) do $(RM) %k
|
||||
-for %i in (lsp cmp clos clx tk ext) do $(RMDIR) %i
|
||||
-$(RM) help.doc
|
||||
clean_doc:
|
||||
cd doc
|
||||
-$(MAKE) "ECL_THREADS = $(ECL_THREADS)" clean
|
||||
cd ..
|
||||
distclean: clean
|
||||
realclean: distclean
|
||||
test1:
|
||||
cd c; $(MAKE)
|
||||
$(MAKE) ecl_min
|
||||
$(MAKE) ecl
|
||||
cd tests; $(MAKE)
|
||||
diff tests tests2
|
||||
test2:
|
||||
$(MAKE) clean_lisp
|
||||
cd c; $(MAKE)
|
||||
$(MAKE) ecl_min
|
||||
$(RM) ecl
|
||||
$(MAKE) ecl
|
||||
for i in lsp clos cmp; do diff --exclude=\*.o $$i old/$$i; done
|
||||
test3:
|
||||
-mkdir stage2
|
||||
cp -rf lsp clos cmp stage2
|
||||
-for i in lsp cmp clos clx tk; do test -f lib$$i.a && mv lib$$i.a stage2; done
|
||||
$(MAKE) clean_lisp
|
||||
./ecl < compile.lsp
|
||||
-for i in lsp clos cmp clx tk; do test -d $$i && diff --exclude=\*.o $$i stage2/$$i; done | less
|
||||
test:
|
||||
$(MAKE) -C tests
|
||||
$(MAKE) -C ansi-tests > ansi-tests/log
|
||||
#-(diff tests ~/src/tests; diff --exclude log ansi-tests ~/src/ansi-tests) | less
|
||||
Loading…
Add table
Add a link
Reference in a new issue