You're welcome,

And while I'm at it, I decided make the mod_neko build in OS X too. The patch is as an attachment and includes changes to the Makefile and src/tools/install.neko.

Lauri

Nicolas Cannasse wrote:
>
> Thanks Lauri,
>
> I'll have a look at it and patch the Makefile/CVS accordingly
>
> Nicolas
>
> ---
> Neko : One VM to run them all
>
Howdy!

As an attachment is a patch to the Neko VM's Makefile revision 1.26 that
makes the build process work in Mac OS X 10.3+.
--- neko-CVS/Makefile.~1.26.~   2005-12-28 17:00:37.000000000 +0200
+++ neko-CVS/Makefile   2005-12-29 01:07:10.000000000 +0200
@@ -1,21 +1,36 @@
 ### CONFIG
 
+# Set to 1 to build for Mac OS X 10.3+
+#
+MACOSX = 0
+
+SRC_DIR = src
+BIN_DIR = bin
+STD_DIR = ${BIN_DIR}/std
+
 CFLAGS = -Wall -O3 -fPIC -fomit-frame-pointer -I vm -DCOMPACT_TABLE
+
+ifeq (${MACOSX}, 0)
 MAKESO = gcc -shared -WBsymbolic
-LIBNEKO_LIBS = -ldl -lgc -lm
-LIBNEKO = -Lbin -lneko
+NEKOVM_FLAGS = -L${BIN_DIR} -lneko
+LIBNEKO_NAME = libneko.so
+LIBNEKO_FLAGS = -ldl -lgc -lm
+STD_NDLL_FLAGS = ${NEKOVM_FLAGS}
+else
+MACOSX_DEPLOYMENT_TARGET = 10.3
+MAKESO = gcc
+NEKOVM_FLAGS = -L${PWD}/${BIN_DIR} -lneko
+LIBNEKO_NAME = libneko.dylib
+LIBNEKO_FLAGS = -ldl -lgc -lm -dynamiclib -single_module -install_name 
@executable_path/${LIBNEKO_NAME}
+STD_NDLL_FLAGS = -bundle -undefined dynamic_lookup ${NEKOVM_FLAGS}
+endif
 
-NEKO_EXEC = LD_LIBRARY_PATH=../bin:${LD_LIBRARY_PATH} NEKOPATH=../boot 
../bin/nekovm
+NEKO_EXEC = LD_LIBRARY_PATH=../${BIN_DIR}:${LD_LIBRARY_PATH} NEKOPATH=../boot 
../${BIN_DIR}/nekovm
 
 # For 64 bit
 #
 # CFLAGS += -D_64BITS
 
-# For OSX
-#
-# MAKESO = gcc -dynamic
-# LIBNEKO = 
-
 # For profiling VM
 #
 # CFLAGS += -DNEKO_PROF
@@ -31,43 +46,57 @@
 LIBNEKO_OBJECTS = vm/alloc.o vm/builtins.o vm/callback.o vm/context.o 
vm/interp.o vm/load.o vm/objtable.o vm/others.o vm/hash.o vm/module.o
 
 all: libneko nekovm std compiler libs
+       mkdir -p ${STD_DIR}/neko
+       mkdir -p ${STD_DIR}/nekoml
+       cp -R ${SRC_DIR}/*n ${STD_DIR}
+       cp -R ${SRC_DIR}/neko/*n ${STD_DIR}/neko
+       cp -R ${SRC_DIR}/nekoml/*n ${STD_DIR}/nekoml
+       cp -R ${SRC_DIR}/tools/test.n ${STD_DIR}
+       @echo \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
+       @echo Before running nekovm from ${PWD}/${BIN_DIR},
+       @echo set the following environment variables:
+       @echo LD_LIBRARY_PATH=${PWD}/${BIN_DIR}
+       @echo NEKOPATH=${PWD}/${STD_DIR}
+       @echo \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
 
-libneko: bin/libneko.so
+libneko: ${BIN_DIR}/${LIBNEKO_NAME}
 
 libs:
-       (cd src; ${NEKO_EXEC} neko tools/install.neko)
-       (cd src; ${NEKO_EXEC} tools/install)
+       (cd ${SRC_DIR}; ${NEKO_EXEC} neko tools/install.neko)
+       (cd ${SRC_DIR}; ${NEKO_EXEC} tools/install)
 
 doc:
-       (cd src; ${NEKO_EXEC} neko tools/makedoc.neko)
-       (cd src; ${NEKO_EXEC} tools/makedoc)
-       
+       (cd ${SRC_DIR}; ${NEKO_EXEC} neko tools/makedoc.neko)
+       (cd ${SRC_DIR}; ${NEKO_EXEC} tools/makedoc)
+
 test:
-       (cd src; ${NEKO_EXEC} neko tools/test.neko)
-       (cd src; ${NEKO_EXEC} tools/test)
+       (cd ${SRC_DIR}; ${NEKO_EXEC} neko tools/test.neko)
+       (cd ${SRC_DIR}; ${NEKO_EXEC} tools/test)
 
-nekovm: bin/nekovm
+nekovm: ${BIN_DIR}/nekovm
 
-std: bin/std.ndll
+std: ${BIN_DIR}/std.ndll
 
 compiler:
-       (cd src; ${NEKO_EXEC} nekoml -v neko/Main.nml nekoml/Main.nml)
-       (cd src; ${NEKO_EXEC} neko -link ../bin/neko.n neko/Main)
-       (cd src; ${NEKO_EXEC} neko -link ../bin/nekoml.n nekoml/Main)
+       (cd ${SRC_DIR}; ${NEKO_EXEC} nekoml -v neko/Main.nml nekoml/Main.nml)
+       (cd ${SRC_DIR}; ${NEKO_EXEC} neko -link ../${BIN_DIR}/neko.n neko/Main)
+       (cd ${SRC_DIR}; ${NEKO_EXEC} neko -link ../${BIN_DIR}/nekoml.n 
nekoml/Main)
+       (cd ${SRC_DIR}; ${NEKO_EXEC} neko -v tools/test.neko)
 
-bin/libneko.so: ${LIBNEKO_OBJECTS}
-       ${MAKESO} -o $@ ${LIBNEKO_OBJECTS} ${LIBNEKO_LIBS}
+${BIN_DIR}/${LIBNEKO_NAME}: ${LIBNEKO_OBJECTS}
+       ${MAKESO} -o $@ ${LIBNEKO_OBJECTS} ${LIBNEKO_FLAGS}
 
-bin/nekovm: $(VM_OBJECTS)
-       ${CC} ${CFLAGS} -o $@ ${VM_OBJECTS} ${LIBNEKO}
+${BIN_DIR}/nekovm: $(VM_OBJECTS)
+       ${CC} ${CFLAGS} -o $@ ${VM_OBJECTS} ${NEKOVM_FLAGS}
 
-bin/std.ndll: ${STD_OBJECTS}
-       ${MAKESO} -o $@ ${STD_OBJECTS} ${LIBNEKO}
+${BIN_DIR}/std.ndll: ${STD_OBJECTS}
+       ${MAKESO} -o $@ ${STD_OBJECTS} ${STD_NDLL_FLAGS}
 
 clean:
-       rm -rf bin/libneko.so bin/nekovm ${LIBNEKO_OBJECTS} ${VM_OBJECTS}
-       rm -rf bin/std bin/*.ndll libs/*/*.o
-       rm -rf src/*.n src/neko/*.n src/nekoml/*.n src/tools/*.n
+       rm -rf ${BIN_DIR}/${LIBNEKO_NAME} ${BIN_DIR}/nekovm ${LIBNEKO_OBJECTS} 
${VM_OBJECTS}
+       rm -rf ${BIN_DIR}/std ${BIN_DIR}/*.ndll ${BIN_DIR}/*.n libs/*/*.o
+       rm -rf ${SRC_DIR}/*.n ${SRC_DIR}/neko/*.n ${SRC_DIR}/nekoml/*.n 
${SRC_DIR}/tools/*.n
+       rm -rf ${BIN_DIR}/mtypes ${BIN_DIR}/tools
 
 .SUFFIXES : .c .o
 
--- neko-CVS/src/tools/install.neko.~1.18.~     2005-12-08 12:39:46.000000000 
+0200
+++ neko-CVS/src/tools/install.neko     2005-12-29 00:51:46.000000000 +0200
@@ -47,7 +47,7 @@
 
 cflags = $array("-O3","-fPIC");
 linkcmd = switch system { "BSD" => "ld" default => "gcc" };
-linkoptions = switch system { default => "-shared -L../../bin -lneko" };
+linkoptions = switch system { "Mac" => "-bundle -undefined dynamic_lookup 
-L../../bin -lneko" default => "-shared -L../../bin -lneko" };
 nekovm = switch system { "Windows" => "..\\bin\\nekovm" default => 
"../bin/nekovm" };
 
 // COMMANDS
@@ -60,6 +60,7 @@
        "/usr/include/mysql",
        "/usr/include",
        "/usr/local/include",
+       "/usr/include/httpd"
 );
 
 libraries = $array(
---
Neko : One VM to run them all

Reply via email to