Browse Source

Improve Mac compat (#48)

Pascal Peridont 8 years ago
parent
commit
4034cce94b
8 changed files with 111 additions and 14 deletions
  1. 2 0
      .gitignore
  2. 4 4
      .travis.yml
  3. 40 8
      Makefile
  4. 6 1
      include/mbedtls/include/mbedtls/config.h
  5. 4 0
      libs/sdl/GLImports.h
  6. 32 1
      libs/sdl/gl.c
  7. 6 0
      libs/sdl/sdl.c
  8. 17 0
      libs/sdl/sdl/GL.hx

+ 2 - 0
.gitignore

@@ -14,10 +14,12 @@ x64
 *.stackdump
 *.stackdump
 *.hdll
 *.hdll
 /src/_main*
 /src/_main*
+*.dylib
 *.o
 *.o
 *.a
 *.a
 *.opendb
 *.opendb
 *.VC.db
 *.VC.db
+/hl
 /include/sdl
 /include/sdl
 /include/openal
 /include/openal
 ReleaseStatic
 ReleaseStatic

+ 4 - 4
.travis.yml

@@ -44,14 +44,14 @@ matrix:
       env: BUILD=make
       env: BUILD=make
       before_install:
       before_install:
         - brew update
         - brew update
-        - brew install jpeg-turbo sdl2
+        - brew install jpeg-turbo sdl2 libogg libvorbis openal-soft
     - haxe: development
     - haxe: development
       os: osx
       os: osx
       osx_image: xcode8
       osx_image: xcode8
       env: BUILD=cmake
       env: BUILD=cmake
       before_install:
       before_install:
         - brew update
         - brew update
-        - brew install jpeg-turbo sdl2
+        - brew install jpeg-turbo sdl2 libogg libvorbis openal-soft
       install:
       install:
         - cmake .
         - cmake .
         - make
         - make
@@ -63,14 +63,14 @@ matrix:
       env: BUILD=make
       env: BUILD=make
       before_install:
       before_install:
         - brew update
         - brew update
-        - brew install jpeg-turbo sdl2
+        - brew install jpeg-turbo sdl2 libogg libvorbis openal-soft
     - haxe: development
     - haxe: development
       os: osx
       os: osx
       osx_image: xcode7.1
       osx_image: xcode7.1
       env: BUILD=cmake
       env: BUILD=cmake
       before_install:
       before_install:
         - brew update
         - brew update
-        - brew install jpeg-turbo sdl2
+        - brew install jpeg-turbo sdl2 libogg libvorbis openal-soft
       install:
       install:
         - cmake .
         - cmake .
         - make
         - make

+ 40 - 8
Makefile

@@ -5,7 +5,7 @@ ifndef ARCH
 	ARCH = $(LBITS)
 	ARCH = $(LBITS)
 endif
 endif
 
 
-CFLAGS = -Wall -O3 -I src -msse2 -mfpmath=sse -std=c11 -I include/pcre -D LIBHL_EXPORTS
+CFLAGS = -Wall -O3 -I src -msse2 -mfpmath=sse -std=c11 -I include/pcre -I include/mbedtls/include -D LIBHL_EXPORTS
 LFLAGS = -L. -lhl
 LFLAGS = -L. -lhl
 LIBFLAGS =
 LIBFLAGS =
 HLFLAGS = -ldl
 HLFLAGS = -ldl
@@ -26,7 +26,33 @@ HL = src/callback.o src/code.o src/jit.o src/main.o src/module.o src/debugger.o
 
 
 FMT = libs/fmt/fmt.o
 FMT = libs/fmt/fmt.o
 
 
-SDL = libs/sdl/sdl.o libs/sdl/gl.o
+SDL = libs/sdl/sdl.o libs/sdl/gl.o libs/sdl/openal.o
+
+SSL = libs/ssl/ssl.o
+
+MBEDTLS = include/mbedtls/library/ssl_srv.o include/mbedtls/library/sha512.o include/mbedtls/library/sha256.o \
+	include/mbedtls/library/pk_wrap.o include/mbedtls/library/pem.o include/mbedtls/library/pkwrite.o \
+	include/mbedtls/library/xtea.o include/mbedtls/library/gcm.o include/mbedtls/library/des.o \
+	include/mbedtls/library/ssl_cli.o include/mbedtls/library/aes.o include/mbedtls/library/ecp_curves.o \
+	include/mbedtls/library/aesni.o include/mbedtls/library/blowfish.o include/mbedtls/library/ssl_cookie.o \
+	include/mbedtls/library/ecp.o include/mbedtls/library/ecdh.o include/mbedtls/library/x509_create.o \
+	include/mbedtls/library/timing.o include/mbedtls/library/pk.o include/mbedtls/library/md.o \
+	include/mbedtls/library/pkcs5.o include/mbedtls/library/oid.o include/mbedtls/library/pkcs11.o \
+	include/mbedtls/library/error.o include/mbedtls/library/ccm.o include/mbedtls/library/ssl_ticket.o \
+	include/mbedtls/library/asn1write.o include/mbedtls/library/certs.o include/mbedtls/library/threading.o \
+	include/mbedtls/library/padlock.o include/mbedtls/library/x509_crl.o include/mbedtls/library/debug.o \
+	include/mbedtls/library/platform.o include/mbedtls/library/dhm.o include/mbedtls/library/pkcs12.o \
+	include/mbedtls/library/ssl_ciphersuites.o include/mbedtls/library/cipher_wrap.o \
+	include/mbedtls/library/base64.o include/mbedtls/library/x509write_csr.o include/mbedtls/library/ripemd160.o \
+	include/mbedtls/library/rsa.o include/mbedtls/library/entropy_poll.o include/mbedtls/library/x509write_crt.o \
+	include/mbedtls/library/pkparse.o include/mbedtls/library/ssl_cache.o include/mbedtls/library/x509_crt.o \
+	include/mbedtls/library/ecdsa.o include/mbedtls/library/md_wrap.o include/mbedtls/library/md5.o \
+	include/mbedtls/library/version.o include/mbedtls/library/arc4.o include/mbedtls/library/ctr_drbg.o \
+	include/mbedtls/library/ecjpake.o include/mbedtls/library/entropy.o include/mbedtls/library/sha1.o \
+	include/mbedtls/library/x509.o include/mbedtls/library/camellia.o include/mbedtls/library/cipher.o \
+	include/mbedtls/library/memory_buffer_alloc.o include/mbedtls/library/hmac_drbg.o include/mbedtls/library/ssl_tls.o \
+	include/mbedtls/library/havege.o include/mbedtls/library/version_features.o include/mbedtls/library/asn1parse.o \
+	include/mbedtls/library/bignum.o include/mbedtls/library/x509_csr.o
 
 
 LIB = ${PCRE} ${RUNTIME} ${STD}
 LIB = ${PCRE} ${RUNTIME} ${STD}
 
 
@@ -48,9 +74,12 @@ else ifeq ($(UNAME),Darwin)
 
 
 # Mac
 # Mac
 LIBEXT=dylib
 LIBEXT=dylib
-CFLAGS += -m$(ARCH) -I /usr/local/opt/jpeg-turbo/include -I /usr/local/include
+CFLAGS += -m$(ARCH) -I /opt/libjpeg-turbo/include -I /usr/local/opt/jpeg-turbo/include -I /usr/local/include -I /usr/local/opt/libvorbis/include -I /usr/local/opt/openal-soft/include
 LFLAGS += -Wl,-export_dynamic -L/usr/local/lib
 LFLAGS += -Wl,-export_dynamic -L/usr/local/lib
-LIBFLAGS += -L/usr/local/opt/jpeg-turbo/lib -L/usr/local/lib
+LIBFLAGS += -L/opt/libjpeg-turbo/lib -L/usr/local/opt/jpeg-turbo/lib -L/usr/local/lib -L/usr/local/opt/libvorbis/lib -L/usr/local/opt/openal-soft/lib
+LIBOPENGL = -framework OpenGL
+LIBSSL = -framework Security -framework CoreFoundation
+
 
 
 else
 else
 
 
@@ -72,7 +101,7 @@ all: libhl hl libs
 install_lib:
 install_lib:
 	cp libhl.${LIBEXT} /usr/local/lib
 	cp libhl.${LIBEXT} /usr/local/lib
 
 
-libs: fmt sdl
+libs: fmt sdl ssl
 
 
 libhl: ${LIB}
 libhl: ${LIB}
 	${CC} -o libhl.$(LIBEXT) -m${ARCH} ${LIBFLAGS} -shared ${LIB} -lpthread -lm
 	${CC} -o libhl.$(LIBEXT) -m${ARCH} ${LIBFLAGS} -shared ${LIB} -lpthread -lm
@@ -85,10 +114,13 @@ hl: ${HL}
 	${CC} ${CFLAGS} -o hl ${HL} ${LFLAGS} ${HLFLAGS}
 	${CC} ${CFLAGS} -o hl ${HL} ${LFLAGS} ${HLFLAGS}
 
 
 fmt: ${FMT}
 fmt: ${FMT}
-	${CC} ${CFLAGS} -shared -o fmt.hdll ${FMT} ${LIBFLAGS} -lpng $(LIBTURBOJPEG) -lz
+	${CC} ${CFLAGS} -shared -o fmt.hdll ${FMT} ${LIBFLAGS} -lhl -lpng $(LIBTURBOJPEG) -lz -lvorbisfile
 
 
 sdl: ${SDL}
 sdl: ${SDL}
-	${CC} ${CFLAGS} -shared -o sdl.hdll ${SDL} ${LIBFLAGS} -lSDL2
+	${CC} ${CFLAGS} -shared -o sdl.hdll ${SDL} ${LIBFLAGS} -lhl -lSDL2 -lopenal $(LIBOPENGL)
+
+ssl: ${MBEDTLS} ${SSL}
+	${CC} ${CFLAGS} -shared -o ssl.hdll ${SSL} ${MBEDTLS} ${LIBFLAGS} -lhl $(LIBSSL)
 
 
 .SUFFIXES : .c .o
 .SUFFIXES : .c .o
 
 
@@ -96,7 +128,7 @@ sdl: ${SDL}
 	${CC} ${CFLAGS} -o $@ -c $<
 	${CC} ${CFLAGS} -o $@ -c $<
 
 
 clean_o:
 clean_o:
-	rm -f ${STD} ${BOOT} ${RUNTIME} ${PCRE} ${HL} ${FMT} ${SDL}
+	rm -f ${STD} ${BOOT} ${RUNTIME} ${PCRE} ${HL} ${FMT} ${SDL} ${MBEDTLS} ${SSL}
 
 
 clean: clean_o
 clean: clean_o
 	rm -f hl hl.exe libhl.$(LIBEXT) *.hdll
 	rm -f hl hl.exe libhl.$(LIBEXT) *.hdll

+ 6 - 1
include/mbedtls/include/mbedtls/config.h

@@ -25,6 +25,7 @@
  *  This file is part of mbed TLS (https://tls.mbed.org)
  *  This file is part of mbed TLS (https://tls.mbed.org)
  */
  */
 
 
+
 #ifndef MBEDTLS_CONFIG_H
 #ifndef MBEDTLS_CONFIG_H
 #define MBEDTLS_CONFIG_H
 #define MBEDTLS_CONFIG_H
 
 
@@ -1274,7 +1275,9 @@
  *
  *
  * Uncomment this to allow your own alternate threading implementation.
  * Uncomment this to allow your own alternate threading implementation.
  */
  */
+#ifdef _WIN32
 #define MBEDTLS_THREADING_ALT
 #define MBEDTLS_THREADING_ALT
+#endif
 
 
 /**
 /**
  * \def MBEDTLS_THREADING_PTHREAD
  * \def MBEDTLS_THREADING_PTHREAD
@@ -1285,7 +1288,9 @@
  *
  *
  * Uncomment this to enable pthread mutexes.
  * Uncomment this to enable pthread mutexes.
  */
  */
-//#define MBEDTLS_THREADING_PTHREAD
+#ifndef _WIN32
+#define MBEDTLS_THREADING_PTHREAD
+#endif
 
 
 /**
 /**
  * \def MBEDTLS_VERSION_FEATURES
  * \def MBEDTLS_VERSION_FEATURES

+ 4 - 0
libs/sdl/GLImports.h

@@ -39,6 +39,10 @@ GL_IMPORT(glUniform4fv, UNIFORM4FV);
 GL_IMPORT(glGetShaderiv, GETSHADERIV);
 GL_IMPORT(glGetShaderiv, GETSHADERIV);
 GL_IMPORT(glGetProgramiv, GETPROGRAMIV);
 GL_IMPORT(glGetProgramiv, GETPROGRAMIV);
 GL_IMPORT(glVertexAttribPointer, VERTEXATTRIBPOINTER);
 GL_IMPORT(glVertexAttribPointer, VERTEXATTRIBPOINTER);
+GL_IMPORT(glBindFragDataLocation, BINDFRAGDATALOCATION);
+GL_IMPORT(glGenVertexArrays, GENVERTEXARRAYS);
+GL_IMPORT(glBindVertexArray, BINDVERTEXARRAY);
+GL_IMPORT(glDeleteVertexArrays, DELETEVERTEXARRAYS);
 
 
 GL_IMPORT(glBeginQuery, BEGINQUERY);
 GL_IMPORT(glBeginQuery, BEGINQUERY);
 GL_IMPORT(glEndQuery, ENDQUERY);
 GL_IMPORT(glEndQuery, ENDQUERY);

+ 32 - 1
libs/sdl/gl.c

@@ -3,7 +3,7 @@
 
 
 #if defined(__APPLE__)
 #if defined(__APPLE__)
 #	include <SDL2/SDL.h>
 #	include <SDL2/SDL.h>
-#	include <OpenGL/gl.h>
+#	include <OpenGL/gl3.h>
 #elif defined(_WIN32)
 #elif defined(_WIN32)
 #	include <SDL.h>
 #	include <SDL.h>
 #	include <GL/GLU.h>
 #	include <GL/GLU.h>
@@ -202,6 +202,12 @@ HL_PRIM vdynamic *HL_NAME(gl_create_program)() {
 	return alloc_i32(v);
 	return alloc_i32(v);
 }
 }
 
 
+HL_PRIM void HL_NAME(gl_bind_frag_data_location)( vdynamic *p, int colNum, vstring *name ) {
+	char *cname = hl_to_utf8(name->bytes);
+	GLOG("%d,%d,%n",p->v.i,colNum,cname);
+	glBindFragDataLocation(p->v.i, colNum, cname);
+}
+
 HL_PRIM void HL_NAME(gl_attach_shader)( vdynamic *p, vdynamic *s ) {
 HL_PRIM void HL_NAME(gl_attach_shader)( vdynamic *p, vdynamic *s ) {
 	GLOG("%d,%d",p->v.i,s->v.i);
 	GLOG("%d,%d",p->v.i,s->v.i);
 	glAttachShader(p->v.i, s->v.i);
 	glAttachShader(p->v.i, s->v.i);
@@ -530,6 +536,27 @@ HL_PRIM void HL_NAME(gl_query_counter)( vdynamic *q, int target ) {
 	glQueryCounter(q->v.i, target);
 	glQueryCounter(q->v.i, target);
 }
 }
 
 
+// vertex array
+
+HL_PRIM vdynamic *HL_NAME(gl_create_vertex_array)() {
+	unsigned int f = 0;
+	glGenVertexArrays(1, &f);
+	GLOGR("%d",f,"");
+	return alloc_i32(f);
+}
+
+HL_PRIM void HL_NAME(gl_bind_vertex_array)( vdynamic *b ) {
+	unsigned int bb = (unsigned)b->v.i;
+	GLOG("%d",bb);
+	glBindVertexArray(bb);
+}
+
+HL_PRIM void HL_NAME(gl_delete_vertex_array)( vdynamic *b ) {
+	unsigned int bb = (unsigned)b->v.i;
+	GLOG("%d",bb);
+	glDeleteVertexArrays(1, &bb);
+}
+
 DEFINE_PRIM(_BOOL,gl_init,_NO_ARG);
 DEFINE_PRIM(_BOOL,gl_init,_NO_ARG);
 DEFINE_PRIM(_BOOL,gl_is_context_lost,_NO_ARG);
 DEFINE_PRIM(_BOOL,gl_is_context_lost,_NO_ARG);
 DEFINE_PRIM(_VOID,gl_clear,_I32);
 DEFINE_PRIM(_VOID,gl_clear,_I32);
@@ -556,6 +583,7 @@ DEFINE_PRIM(_VOID,gl_stencil_mask_separate,_I32 _I32);
 DEFINE_PRIM(_VOID,gl_stencil_func_separate,_I32 _I32 _I32 _I32);
 DEFINE_PRIM(_VOID,gl_stencil_func_separate,_I32 _I32 _I32 _I32);
 DEFINE_PRIM(_VOID,gl_stencil_op_separate,_I32  _I32 _I32 _I32);
 DEFINE_PRIM(_VOID,gl_stencil_op_separate,_I32  _I32 _I32 _I32);
 DEFINE_PRIM(_NULL(_I32),gl_create_program,_NO_ARG);
 DEFINE_PRIM(_NULL(_I32),gl_create_program,_NO_ARG);
+DEFINE_PRIM(_VOID,gl_bind_frag_data_location,_NULL(_I32) _I32 _STRING);
 DEFINE_PRIM(_VOID,gl_attach_shader,_NULL(_I32) _NULL(_I32));
 DEFINE_PRIM(_VOID,gl_attach_shader,_NULL(_I32) _NULL(_I32));
 DEFINE_PRIM(_VOID,gl_link_program,_NULL(_I32));
 DEFINE_PRIM(_VOID,gl_link_program,_NULL(_I32));
 DEFINE_PRIM(_DYN,gl_get_program_parameter,_NULL(_I32) _I32);
 DEFINE_PRIM(_DYN,gl_get_program_parameter,_NULL(_I32) _I32);
@@ -599,6 +627,9 @@ DEFINE_PRIM(_VOID,gl_delete_buffer,_NULL(_I32));
 DEFINE_PRIM(_VOID,gl_uniform1i,_NULL(_I32) _I32);
 DEFINE_PRIM(_VOID,gl_uniform1i,_NULL(_I32) _I32);
 DEFINE_PRIM(_VOID,gl_uniform4fv,_NULL(_I32) _BYTES _I32 _I32);
 DEFINE_PRIM(_VOID,gl_uniform4fv,_NULL(_I32) _BYTES _I32 _I32);
 DEFINE_PRIM(_VOID,gl_draw_elements,_I32 _I32 _I32 _I32);
 DEFINE_PRIM(_VOID,gl_draw_elements,_I32 _I32 _I32 _I32);
+DEFINE_PRIM(_NULL(_I32),gl_create_vertex_array,_NO_ARG);
+DEFINE_PRIM(_VOID,gl_bind_vertex_array,_NULL(_I32));
+DEFINE_PRIM(_VOID,gl_delete_vertex_array,_NULL(_I32));
 
 
 
 
 DEFINE_PRIM(_NULL(_I32), gl_create_query, _NO_ARG);
 DEFINE_PRIM(_NULL(_I32), gl_create_query, _NO_ARG);

+ 6 - 0
libs/sdl/sdl.c

@@ -252,8 +252,14 @@ DEFINE_PRIM(_BOOL, detect_win32, _NO_ARG);
 
 
 HL_PRIM SDL_Window *HL_NAME(win_create)(vbyte *title, int width, int height) {
 HL_PRIM SDL_Window *HL_NAME(win_create)(vbyte *title, int width, int height) {
 	SDL_Window *w;
 	SDL_Window *w;
+	#ifdef HL_MAC
+	SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
+	SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
+	SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
+	#else
 	SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
 	SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
 	SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
 	SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
+	#endif
 	SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
 	SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
 	SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
 	SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
 	SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
 	SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);

+ 17 - 0
libs/sdl/sdl/GL.hx

@@ -24,6 +24,9 @@ abstract Renderbuffer(Null<Int>) {
 abstract Query(Null<Int>) {
 abstract Query(Null<Int>) {
 }
 }
 
 
+abstract VertexArray(Null<Int>) {
+}
+
 @:hlNative("sdl","gl_")
 @:hlNative("sdl","gl_")
 class GL {
 class GL {
 
 
@@ -124,6 +127,9 @@ class GL {
 		return null;
 		return null;
 	}
 	}
 
 
+	public static function bindFragDataLocation( p : Program, colorNumber : Int, name : String ) : Void {
+	}
+
 	public static function attachShader( p : Program, s : Shader ) {
 	public static function attachShader( p : Program, s : Shader ) {
 	}
 	}
 
 
@@ -315,6 +321,17 @@ class GL {
 	public static function queryCounter( q : Query, target : Int ) {
 	public static function queryCounter( q : Query, target : Int ) {
 	}
 	}
 
 
+	// vertexarray
+	public static function createVertexArray() : VertexArray {
+		return null;
+	}
+
+	public static function bindVertexArray( a : VertexArray ) : Void {
+	}
+
+	public static function deleteVertexArray( a : VertexArray ) : Void {
+	}
+
 	// ----- CONSTANTS -----
 	// ----- CONSTANTS -----
 
 
 	/* ClearBufferMask */
 	/* ClearBufferMask */