mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-08 02:10:36 -08:00
316 lines
9.5 KiB
Text
316 lines
9.5 KiB
Text
#
|
|
# Makefile for ECoLisp
|
|
#
|
|
top_srcdir= ..\src
|
|
srcdir = ..\src
|
|
|
|
# =============================================================
|
|
# ECL configuration
|
|
# <BEGIN>
|
|
|
|
SHORT_SITE_NAME =
|
|
LONG_SITE_NAME =
|
|
ECL_VERSION = 0.9d
|
|
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
|
|
|
|
ecl$(EXE): ecl_min$(EXE) compile.lsp sysfun.lsp
|
|
.\ecl_min < compile.lsp
|
|
|
|
ecl-static.lib: ecl$(EXE)
|
|
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.msvc6
|
|
if not exist lsp $(MKDIR) lsp
|
|
sed -e "s,@ecldir@,$(libdir:\=/),g" \
|
|
-e "s,@SHORT_SITE_NAME@,$(SHORT_SITE_NAME),g" \
|
|
-e "s,@LONG_SITE_NAME@,$(LONG_SITE_NAME),g" \
|
|
-e "s,@PACKAGE_VERSION@,$(ECL_VERSION),g" \
|
|
-e "s,@ARCHITECTURE@,$(ARCHITECTURE),g" \
|
|
-e "s,@MACHINE_INSTANCE@,$(MACHINE_INSTANCE),g" \
|
|
-e "s,@MACHINE_VERSION@,$(MACHINE),g" \
|
|
-e "s,@SOFTWARE_TYPE@,$(SOFTWARE_TYPE),g" \
|
|
-e "s,@SOFTWARE_VERSION@,$(SOFTWARE_VERSION),g" \
|
|
-e "s,@thehost@,$(THEHOST),g" \
|
|
< $(srcdir)\lsp\config.lsp.in > lsp\config.lsp
|
|
compile.lsp: bare.lsp $(srcdir)/compile.lsp.in Makefile.msvc6
|
|
sed -e "s,@ecldir@,$(libdir:\=/),g" \
|
|
-e "s,@true_srcdir@,$(srcdir:\=/),g" \
|
|
-e "s,@true_builddir@,$(MAKEDIR:\=/),g" \
|
|
-e "s,@CFLAGS@,$(CFLAGS),g" \
|
|
-e "s,@ECL_CFLAGS@,,g" \
|
|
-e "s,@CPPFLAGS@,,g" \
|
|
-e "s,@LDRPATH@,,g" \
|
|
-e "s,@LDFLAGS@,/MD /link /LIBPATH:~S,g" \
|
|
-e "s,@SHARED_LDFLAGS@,/LD,g" \
|
|
-e "s,@BUNDLE_LDFLAGS@,/LD,g" \
|
|
-e "s,@CLIBS@,user32.lib ws2_32.lib,g" \
|
|
-e "s,@STATICLIBS@,eclgmp.lib eclgc.lib,g" \
|
|
-e "s,@LIBS@,user32.lib ws2_32.lib,g" \
|
|
-e "s,@CORE_LIBS@,,g" \
|
|
-e "s,@FASL_LIBS@,,g" \
|
|
-e "s,@OBJEXT@,obj,g" \
|
|
-e "s,@SHAREDPREFIX@,,g" \
|
|
-e "s,@SHAREDEXT@,lib,g" \
|
|
-e "s,@LIBPREFIX@,,g" \
|
|
-e "s,@LIBEXT@,lib,g" \
|
|
-e "s,@EXEEXT@,.exe,g" \
|
|
-e "s,@LDINSTALLNAME@,,g" \
|
|
-e "s,@DEF@,$(DEF),g" \
|
|
-e "s,@ECL_MODULES@,$(ECL_MODULES),g" \
|
|
-e "s,@RANLIB@,ranlib,g" \
|
|
< $(srcdir)\compile.lsp.in > compile.lsp
|
|
bare.lsp: $(srcdir)/bare.lsp.in lsp/load.lsp clos/load.lsp cmp/load.lsp cmp/cmpcfg.lsp
|
|
sed -e "s,@true_srcdir@,$(srcdir:\=/),g" \
|
|
-e "s,@true_builddir@,$(MAKEDIR:\=/),g" < $(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.msvc6
|
|
sed -e "s,@ECL_CC@,$(CC),g" \
|
|
-e "s,@CFLAGS@,$(CFLAGS),g" \
|
|
-e "s,@ECL_CFLAGS@,,g" \
|
|
-e "s,@CPPFLAGS@,,g" \
|
|
-e "s,@LDRPATH@,,g" \
|
|
-e "s,@LDFLAGS@,/MD /link /LIBPATH:~S,g" \
|
|
-e "s,@SHARED_LDFLAGS@,/LD,g" \
|
|
-e "s,@BUNDLE_LDFLAGS@,/LD,g" \
|
|
-e "s,@CLIBS@,user32.lib ws2_32.lib,g" \
|
|
-e "s,@STATICLIBS@,eclgmp.lib eclgc.lib,g" \
|
|
-e "s,@OBJEXT@,obj,g" \
|
|
-e "s,@SHAREDPREFIX@,,g" \
|
|
-e "s,@SHAREDEXT@,dll,g" \
|
|
-e "s,@LIBPREFIX@,,g" \
|
|
-e "s,@LIBEXT@,lib,g" \
|
|
-e "s,@EXEEXT@,.exe,g" \
|
|
< $(srcdir)\cmp\cmpcfg.lsp.in > cmp\cmpcfg.lsp
|
|
ecl-config.bat: util\ecl-config.bat Makefile.msvc6
|
|
sed -e "s,~A,$(libdir:\=/),;s,~\*,," \
|
|
-e "s,@ECL_CFLAGS@,$(CFLAGS),g" \
|
|
-e "s,@LDFLAGS@,,g" \
|
|
-e "s,@CLIBS@,,g" \
|
|
-e "s,@libdir@,$(libdir:\=/)," \
|
|
-e "s,@includedir@,$(libdir:\=/)/h," util\ecl-config.bat > ecl-config.bat
|
|
|
|
|
|
eclmin.lib: eclgmp.lib eclgc.lib lsp/config.lsp
|
|
cd c
|
|
$(MAKE) -f Makefile.msvc6 "ECL_THREADS = $(ECL_THREADS)"
|
|
cd ..
|
|
eclgc.lib:
|
|
cd gc
|
|
$(MAKE) -f Makefile.msvc6 "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) -f Makefile.msvc6 "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) -f Makefile.msvc6 install "prefix=$(prefix)"
|
|
cd ..\doc
|
|
$(MAKE) -f Makefile.msvc6 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
|
|
$(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) -f Makefile.msvc6 bindir=$(prefix) libdir=$(prefix) install-base
|
|
cd c
|
|
$(MAKE) -f Makefile.msvc6 prefix=$(prefix) flatinstall
|
|
cd ..\doc
|
|
$(MAKE) -f Makefile.msvc6 prefix=$(prefix) flatinstall
|
|
cd ..
|
|
|
|
windows-nsi:
|
|
IF EXIST $(TAR_DIR) $(RMDIR) $(TAR_DIR)
|
|
$(MKDIR) $(TAR_DIR)
|
|
$(MAKE) -f Makefile.msvc6 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) -f Makefile.msvc6
|
|
cd ..
|
|
|
|
clean: clean_ecl clean_lisp clean_doc
|
|
-$(RM) .gdbinit
|
|
cd gc
|
|
-$(MAKE) -f Makefile.msvc6 "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) -f Makefile.msvc6 "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 \
|
|
ecl$(EXE) *.exp *.ilk *.pdb *.c *.obj ecl-config.bat ecl-static.lib) \
|
|
do $(RM) %i
|
|
cd c
|
|
-$(MAKE) -f Makefile.msvc6 "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) -f Makefile.msvc6 "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
|