Skip to content

Instantly share code, notes, and snippets.

@slaskis
Created September 16, 2009 21:33
Show Gist options
  • Save slaskis/188206 to your computer and use it in GitHub Desktop.
Save slaskis/188206 to your computer and use it in GitHub Desktop.
--- Makefile.original 2009-09-16 19:29:16.000000000 +0200
+++ Makefile 2009-09-16 22:37:28.000000000 +0200
@@ -1,99 +1,60 @@
-## CONFIG
+prefix ?= /usr/local
+DESTDIR ?= /usr/local
-INSTALL_PREFIX = /usr/local
-
-CFLAGS = -Wall -O3 -fPIC -fomit-frame-pointer -I vm -D_GNU_SOURCE
-EXTFLAGS = -pthread
-MAKESO = $(CC) -shared -WBsymbolic
-LIBNEKO_NAME = libneko.so
-LIBNEKO_LIBS = -ldl -lgc -lm
-NEKOVM_FLAGS = -Lbin -lneko
-STD_NDLL_FLAGS = ${NEKOVM_FLAGS}
-INSTALL_FLAGS =
-
-NEKO_EXEC = LD_LIBRARY_PATH=../bin:${LD_LIBRARY_PATH} NEKOPATH=../boot:../bin ../bin/neko
-
-# For OSX
-#
-# MACOSX = 1
-
-# For OSX Universal Binaries
-#
-# OSX_UNIVERSAL = 1
-
-
-# For 64 bit
-#
-# CFLAGS += -D_64BITS
-
-# For profiling VM
-#
-# CFLAGS += -DNEKO_PROF
-
-# For lower memory usage (takes more CPU !)
-#
-# CFLAGS += -DLOW_MEM
-
-# For MINGW/MSYS
-
-ifeq (${WIN32}, 1)
-CFLAGS = -g -Wall -O3 -momit-leaf-frame-pointer -I vm -I /usr/local/include
+CFLAGS ?= -Wall -O3 -v -fPIC -fomit-frame-pointer -Ivm -I${prefix}/include -L${prefix}/lib
EXTFLAGS =
-MAKESO = $(CC) -O -shared
-LIBNEKO_NAME = neko.dll
-LIBNEKO_LIBS = -Lbin -lgc
-STD_NDLL_FLAGS = ${NEKOVM_FLAGS} -lws2_32
-endif
-
-### OSX SPECIFIC
-
-ifeq (${UNIVERSAL},1)
-MACOSX=1
-OSX_UNIVERSAL=1
-endif
+INSTALL_FLAGS =
-ifeq (${MACOSX}, 1)
export MACOSX_DEPLOYMENT_TARGET=10.3
-EXTFLAGS =
-MAKESO = ${CC}
LIBNEKO_NAME = libneko.dylib
LIBNEKO_INSTALL = -install_name @executable_path/${LIBNEKO_NAME}
LIBNEKO_LIBS = -ldl -lgc -lm -dynamiclib -single_module ${LIBNEKO_INSTALL}
NEKOVM_FLAGS = -L${PWD}/bin -lneko
STD_NDLL_FLAGS = -bundle -undefined dynamic_lookup ${NEKOVM_FLAGS}
+NEKO_EXEC = LD_LIBRARY_PATH=../bin:${LD_LIBRARY_PATH} NEKOPATH=../boot:../bin ../bin/neko
ifeq (${OSX_UNIVERSAL}, 1)
-
-export MACOSX_DEPLOYMENT_TARGET_i386=10.4
-export MACOSX_DEPLOYMENT_TARGET_ppc=10.3
-CFLAGS += -arch ppc -arch i386 -L/usr/local/lib -L/opt/local/lib -I/opt/local/include
-UNIV = libs/include/osx_universal
-#linking to shared lib (.a) explicitly:
-LIBNEKO_DEPS = ${UNIV}/libgc.a -lSystemStubs
-LIBNEKO_LIBS = ${LIBNEKO_DEPS} -dynamiclib -single_module ${LIBNEKO_INSTALL} ${CFLAGS}
-NEKOVM_FLAGS = -L${PWD}/bin -lneko
-STD_NDLL_FLAGS = -bundle ${NEKOVM_FLAGS} ${CFLAGS}
-INSTALL_FLAGS = -osx-universal
-
+ export MACOSX_DEPLOYMENT_TARGET=10.4
+ export MACOSX_DEPLOYMENT_TARGET_i386=10.4
+ export MACOSX_DEPLOYMENT_TARGET_ppc=10.3
+ CFLAGS += -arch ppc -arch i386
+ UNIV = libs/include/osx_universal
+ #linking to shared lib (.a) explicitly:
+ LIBNEKO_DEPS = ${UNIV}/libgc.a -lSystemStubs
+ LIBNEKO_LIBS = ${LIBNEKO_DEPS} -dynamiclib -single_module ${LIBNEKO_INSTALL} ${CFLAGS}
+ STD_NDLL_FLAGS = -bundle ${NEKOVM_FLAGS} ${CFLAGS}
+ INSTALL_FLAGS = -osx-universal
endif
-endif
-
-### MAKE
-
VM_OBJECTS = vm/stats.o vm/main.o
-STD_OBJECTS = libs/std/buffer.o libs/std/date.o libs/std/file.o libs/std/init.o libs/std/int32.o libs/std/math.o libs/std/string.o libs/std/random.o libs/std/serialize.o libs/std/socket.o libs/std/sys.o libs/std/xml.o libs/std/module.o libs/std/md5.o libs/std/utf8.o libs/std/memory.o libs/std/misc.o libs/std/thread.o libs/std/process.o
-LIBNEKO_OBJECTS = vm/alloc.o vm/builtins.o vm/callback.o vm/interp.o vm/load.o vm/objtable.o vm/others.o vm/hash.o vm/module.o vm/jit_x86.o vm/threads.o
+STD_OBJECTS = libs/std/buffer.o libs/std/date.o libs/std/file.o libs/std/init.o \
+ libs/std/int32.o libs/std/math.o libs/std/string.o libs/std/random.o libs/std/serialize.o \
+ libs/std/socket.o libs/std/sys.o libs/std/xml.o libs/std/module.o libs/std/md5.o \
+ libs/std/utf8.o libs/std/memory.o libs/std/misc.o libs/std/thread.o libs/std/process.o
+LIBNEKO_OBJECTS = vm/alloc.o vm/builtins.o vm/callback.o vm/interp.o vm/load.o vm/objtable.o \
+ vm/others.o vm/hash.o vm/module.o vm/jit_x86.o vm/threads.o
+
+### TARGETS
all: createbin libneko neko std compiler libs
universal:
- make MACOSX=1 OSX_UNIVERSAL=1
+ make OSX_UNIVERSAL=1
createbin:
-mkdir bin 2>/dev/null
libneko: bin/${LIBNEKO_NAME}
+
+neko: bin/neko
+
+std: bin/std.ndll
+
+compiler:
+ (cd src; ${NEKO_EXEC} nekoml -nostd neko/Main.nml nekoml/Main.nml)
+ (cd src; ${NEKO_EXEC} nekoc -link ../boot/nekoc.n neko/Main)
+ (cd src; ${NEKO_EXEC} nekoc -link ../boot/nekoml.n nekoml/Main)
+
libs:
(cd src; ${NEKO_EXEC} nekoc tools/install.neko)
@@ -106,45 +67,42 @@
test:
(cd src; ${NEKO_EXEC} nekoc tools/test.neko)
(cd src; ${NEKO_EXEC} tools/test)
+
+clean:
+ rm -rf bin/${LIBNEKO_NAME} ${LIBNEKO_OBJECTS} ${VM_OBJECTS}
+ rm -rf bin/neko bin/nekoc bin/nekoml bin/nekotools
+ rm -rf bin/std bin/*.ndll bin/*.n libs/*/*.o
+ rm -rf src/*.n src/neko/*.n src/nekoml/*.n src/tools/*.n
+ rm -rf bin/mtypes bin/tools
-neko: bin/neko
-
-std: bin/std.ndll
+install:
+ -mkdir ${DESTDIR}/lib
+ cp bin/${LIBNEKO_NAME} ${DESTDIR}/lib
+ -mkdir ${DESTDIR}/bin
+ cp bin/neko bin/nekoc bin/nekotools bin/nekoml bin/nekoml.std ${DESTDIR}/bin
+ -mkdir ${DESTDIR}/lib/neko
+ cp bin/*.ndll ${DESTDIR}/lib/neko
+ -mkdir ${DESTDIR}/include
+ cp vm/neko*.h ${DESTDIR}/include
-compiler:
- (cd src; ${NEKO_EXEC} nekoml -nostd neko/Main.nml nekoml/Main.nml)
- (cd src; ${NEKO_EXEC} nekoc -link ../boot/nekoc.n neko/Main)
- (cd src; ${NEKO_EXEC} nekoc -link ../boot/nekoml.n nekoml/Main)
+uninstall:
+ rm -rf ${DESTDIR}/lib/${LIBNEKO_NAME}
+ rm -rf ${DESTDIR}/bin/neko ${DESTDIR}/bin/nekoc ${DESTDIR}/bin/nekotools
+ rm -rf ${DESTDIR}/lib/neko
+
+### SUBTARGETS
bin/${LIBNEKO_NAME}: ${LIBNEKO_OBJECTS}
- ${MAKESO} ${EXTFLAGS} -o $@ ${LIBNEKO_OBJECTS} ${LIBNEKO_LIBS}
+ ${CC} ${EXTFLAGS} -o $@ ${LIBNEKO_OBJECTS} ${LIBNEKO_LIBS}
bin/neko: $(VM_OBJECTS)
${CC} ${CFLAGS} ${EXTFLAGS} -o $@ ${VM_OBJECTS} ${NEKOVM_FLAGS}
strip bin/neko
bin/std.ndll: ${STD_OBJECTS}
- ${MAKESO} -o $@ ${STD_OBJECTS} ${STD_NDLL_FLAGS}
-
-clean:
- rm -rf bin/${LIBNEKO_NAME} ${LIBNEKO_OBJECTS} ${VM_OBJECTS}
- rm -rf bin/neko bin/nekoc bin/nekoml bin/nekotools
- rm -rf bin/std bin/*.ndll bin/*.n libs/*/*.o
- rm -rf src/*.n src/neko/*.n src/nekoml/*.n src/tools/*.n
- rm -rf bin/mtypes bin/tools
-
-install:
- cp bin/${LIBNEKO_NAME} ${INSTALL_PREFIX}/lib
- cp bin/neko bin/nekoc bin/nekotools bin/nekoml bin/nekoml.std ${INSTALL_PREFIX}/bin
- -mkdir ${INSTALL_PREFIX}/lib/neko
- cp bin/*.ndll ${INSTALL_PREFIX}/lib/neko
- -mkdir ${INSTALL_PREFIX}/include
- cp vm/neko*.h ${INSTALL_PREFIX}/include
+ ${CC} -o $@ ${STD_OBJECTS} ${STD_NDLL_FLAGS}
-uninstall:
- rm -rf ${INSTALL_PREFIX}/lib/${LIBNEKO_NAME}
- rm -rf ${INSTALL_PREFIX}/bin/neko ${INSTALL_PREFIX}/bin/nekoc ${INSTALL_PREFIX}/bin/nekotools
- rm -rf ${INSTALL_PREFIX}/lib/neko
+### MAGIC
.SUFFIXES : .c .o
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment