124 lines
4.6 KiB
Makefile
124 lines
4.6 KiB
Makefile
#
|
|
# rcsid $Header: /usr/cvsroot/magic-8.0/magic/Makefile,v 1.1.1.1 2008/02/03 20:43:50 tim Exp $
|
|
#
|
|
|
|
MODULE = magic
|
|
MAGICDIR = ..
|
|
|
|
include ${MAGICDIR}/defs.mak
|
|
|
|
SRCS = magicTop.c
|
|
ifeq (${MAKE_WASM},1)
|
|
SRCS += magicWasm.c
|
|
endif
|
|
|
|
EXTRA_LIBS = ${MAGICDIR}/bplane/libbplane.o \
|
|
${MAGICDIR}/cmwind/libcmwind.o \
|
|
${MAGICDIR}/commands/libcommands.o \
|
|
${MAGICDIR}/database/libdatabase.o \
|
|
${MAGICDIR}/dbwind/libdbwind.o \
|
|
${MAGICDIR}/drc/libdrc.o \
|
|
${MAGICDIR}/debug/libdebug.o \
|
|
${MAGICDIR}/extract/libextract.o \
|
|
${MAGICDIR}/graphics/libgraphics.o \
|
|
${MAGICDIR}/select/libselect.o \
|
|
${MAGICDIR}/textio/libtextio.o \
|
|
${MAGICDIR}/tiles/libtiles.o \
|
|
${MAGICDIR}/windows/libwindows.o \
|
|
${MAGICDIR}/wiring/libwiring.o \
|
|
${MAGICDIR}/resis/libresis.o \
|
|
${MAGICDIR}/sim/libsim.o \
|
|
${MAGICDIR}/netmenu/libnetmenu.o \
|
|
${MAGICDIR}/plow/libplow.o \
|
|
${MAGICDIR}/utils/libutils.o \
|
|
${MAIN_EXTRA_LIBS}
|
|
|
|
BITMAPS = up.gif down.gif left.gif right.gif zoom.gif lock.xbm
|
|
DEST_XBM = $(BITMAPS:%=$(DESTDIR)${INSTALL_TCLDIR}/bitmaps/%)
|
|
|
|
# DFLAGS += -DCAD_DIR="${LIBDIR}"
|
|
LIBS += ${GR_LIBS} ${READLINE_LIBS} -lm ${LD_EXTRA_LIBS} \
|
|
${OA_LIBS} ${ZLIB_FLAG} ${TOP_EXTRA_LIBS}
|
|
CLEANS += tclmagic${SHDLIB_EXT} libtclmagic${SHDLIB_EXT}.a proto.magicrc
|
|
|
|
ifeq (${MAKE_WASM},1)
|
|
# magicWasm.c bootstraps the embedded Tcl interp by calling Tcl_CreateInterp /
|
|
# Tcl_Init before tclStubsPtr is initialised. With -DUSE_TCL_STUBS those calls
|
|
# expand to (*tclStubsPtr->...)() and dereference a NULL stubs pointer; so
|
|
# this one file must be compiled with DFLAGS_NOSTUB (= DFLAGS without
|
|
# -DUSE_TCL_STUBS). All other files keep using stubs.
|
|
magicWasm.o: magicWasm.c
|
|
@echo --- compiling magic/magicWasm.o '(no Tcl stubs)'
|
|
${RM} magicWasm.o
|
|
${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS_NOSTUB} -c magicWasm.c
|
|
|
|
magic.js: lib${MODULE}.o ${EXTRA_LIBS}
|
|
@echo --- building main magic WASM
|
|
${RM} magic.js magic.wasm
|
|
ifneq (${TCL_LIB_DIR},)
|
|
# TCL variant: pull in the main TCL archive (LIB_SPECS_NOSTUB → -ltcl9.x) and
|
|
# the stub-bootstrap archive (-ltclstub). Both are required: magic's objects
|
|
# use USE_TCL_STUBS macros (resolved by tclStubsPtr from libtclstub.a), and
|
|
# tclStubsPtr itself must point into the real TCL implementation (libtcl9.x.a).
|
|
${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} ${LDFLAGS} lib${MODULE}.o ${EXTRA_LIBS} -o magic.js ${LIBS} ${LIB_SPECS_NOSTUB} -L${TCL_LIB_DIR} -ltclstub
|
|
else
|
|
${CC} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} ${LDFLAGS} lib${MODULE}.o ${EXTRA_LIBS} -o magic.js ${LIBS}
|
|
endif
|
|
endif
|
|
|
|
main: magic proto.magicrc
|
|
ifeq (${MAKE_WASM},1)
|
|
@bash ${MAGICDIR}/toolchains/emscripten/post-build.sh magic.js magic.wasm
|
|
endif
|
|
|
|
tcl-main: tclmagic${SHDLIB_EXT} proto.magicrc
|
|
|
|
tclmagic${SHDLIB_EXT}: ${EXTRA_LIBS}
|
|
@echo --- making magic Tcl library \(tclmagic${SHDLIB_EXT}\)
|
|
${RM} tclmagic${SHDLIB_EXT}
|
|
${CC} ${CFLAGS} ${CPPFLAGS} -o $@ ${LDFLAGS} ${LDDL_FLAGS} ${LD_RUN_PATH} \
|
|
${LD_FIRST_LIBS} ${EXTRA_LIBS} ${LD_EXTRA_LIBS} \
|
|
-lc ${LIBS} ${LIB_SPECS}
|
|
|
|
proto.magicrc: proto.magicrc.in
|
|
${MCPP} ${GR_DFLAGS} ${DFLAGS} proto.magicrc.in > proto.magicrc
|
|
|
|
install: $(DESTDIR)${INSTALL_BINDIR}/${MODULE}${EXEEXT} $(DESTDIR)${INSTALL_SYSDIR}/.magicrc \
|
|
$(DESTDIR)${INSTALL_SYSDIR}/magicps.pro
|
|
|
|
install-tcl: $(DESTDIR)${INSTALL_TCLDIR}/tclmagic${SHDLIB_EXT} $(DESTDIR)${INSTALL_SYSDIR}/.magicrc \
|
|
$(DESTDIR)${INSTALL_SYSDIR}/.initrc $(DESTDIR)${INSTALL_SYSDIR}/magicps.pro ${DEST_XBM}
|
|
|
|
$(DESTDIR)${INSTALL_TCLDIR}/tclmagic${SHDLIB_EXT}: tclmagic${SHDLIB_EXT}
|
|
${RM} $(DESTDIR)${INSTALL_TCLDIR}/tclmagic${SHDLIB_EXT}
|
|
${CP} tclmagic${SHDLIB_EXT} $(DESTDIR)${INSTALL_TCLDIR}/tclmagic${SHDLIB_EXT}
|
|
|
|
$(DESTDIR)${INSTALL_TCLDIR}/bitmaps/%: bitmaps/%
|
|
${RM} $(DESTDIR)${INSTALL_TCLDIR}/bitmaps/$*
|
|
${CP} bitmaps/$* $(DESTDIR)${INSTALL_TCLDIR}/bitmaps/$*
|
|
|
|
$(DESTDIR)${INSTALL_SYSDIR}/.magicrc: proto.magicrc
|
|
${RM} $(DESTDIR)${INSTALL_SYSDIR}/.magicrc
|
|
${CP} proto.magicrc $(DESTDIR)${INSTALL_SYSDIR}/.magicrc
|
|
|
|
$(DESTDIR)${INSTALL_SYSDIR}/.initrc: proto.initrc
|
|
${RM} $(DESTDIR)${INSTALL_SYSDIR}/.initrc
|
|
${CP} proto.initrc $(DESTDIR)${INSTALL_SYSDIR}/.initrc
|
|
|
|
$(DESTDIR)${INSTALL_SYSDIR}/magicps.pro: magicps.pro
|
|
${RM} $(DESTDIR)${INSTALL_SYSDIR}/magicps.pro
|
|
${CP} magicps.pro $(DESTDIR)${INSTALL_SYSDIR}/magicps.pro
|
|
|
|
include ${MAGICDIR}/rules.mak
|
|
|
|
ifeq (${MAKE_WASM},1)
|
|
# rules.mak defines `${MODULE}` (= `magic`) with a recipe that links a native
|
|
# executable without the TCL libraries. For the WASM build the real artifact
|
|
# is `magic.js` (+ `magic.wasm`), so override the target to be a phony alias
|
|
# that just rebuilds magic.js. Must come after the include so make uses this
|
|
# recipe instead of rules.mak's.
|
|
.PHONY: magic
|
|
magic: magic.js
|
|
@:
|
|
endif
|