# HG changeset patch # User John Tsiombikas # Date 1385292644 -7200 # Node ID b4c9a24c946ee1881d88a04c8973ed2e13ed25b5 # Parent 25b911c7c35c1aedcd1e670e35c83382a9e6ca3a wrote an awesome configure script added "main" 3d engine source file with global init/cleanup diff -r 25b911c7c35c -r b4c9a24c946e Makefile --- a/Makefile Mon Nov 18 04:10:19 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -PREFIX = /usr/local - -csrc = $(wildcard src/*.c) -ccsrc = $(wildcard src/*.cc) -obj = $(csrc:.c=.o) $(ccsrc:.cc=.o) -dep = $(obj:.o=.d) -name = goat3dgfx -lib_a = lib$(name).a - -so_major = 0 -so_minor = 1 - -ifeq ($(shell uname -r), Darwin) - libgl = -framework OpenGL -framework GLUT -lGLEW - - lib_so = lib$(name).dylib - shared = -dynamiclib -else - libgl = -lGL -lGLU -lglut -lGLEW - - lib_so = lib$(name).so.$(so_major).$(so_minor) - soname = lib$(name).so.$(so_major) - devlink = lib$(name).so - shared = -shared -Wl,-soname=$(soname) - pic = -fPIC -endif - -dbg = -g -warn = -Wall - -libs_ldflags = -limago -lanim -lpsys -lvmath - -CFLAGS = -pedantic $(warn) $(dbg) $(pic) $(opt) $(inc) $(libs_cflags) -CXXFLAGS = $(CFLAGS) -LDFLAGS = $(libgl) $(libs_ldflags) - -.PHONY: all -all: $(lib_so) $(lib_a) - -$(lib_a): $(obj) - $(AR) rcs $@ $(obj) - -$(lib_so): $(obj) - $(CXX) $(shared) -o $@ $(obj) $(LDFLAGS) - --include $(dep) - -%.d: %.c - @$(CPP) $(CFLAGS) $< -MM -MT $(@:.d=.o) >$@ - -%.d: %.cc - @$(CPP) $(CXXFLAGS) $< -MM -MT $(@:.d=.o) >$@ - -.PHONY: clean -clean: - rm -f $(obj) $(lib_a) $(lib_so) - -.PHONY: cleandep -cleandep: - rm -f $(dep) - -.PHONY: install -install: $(lib_so) $(lib_a) - mkdir -p $(DESTDIR)$(PREFIX)/lib $(DESTDIR)$(PREFIX)/include/goat3dgfx - cp src/*.h src/*.inl $(DESTDIR)$(PREFIX)/include/goat3dgfx/ - cp $(lib_a) $(DESTDIR)$(PREFIX)/lib/$(lib_a) - cp $(lib_so) $(DESTDIR)$(PREFIX)/lib/$(lib_so) - [ -n "$(devlink)" ] && \ - cd $(DESTDIR)$(PREFIX)/lib && \ - rm -f $(soname) $(devlink) && \ - ln -s $(lib_so) $(soname) && \ - ln -s $(soname) $(devlink) || \ - true - -.PHONY: uninstall -uninstall: - rm -f $(DESTDIR)$(PREFIX)/include/goat3dgfx/* - rmdir $(DESTDIR)$(PREFIX)/include/goat3dgfx - rm -f $(DESTDIR)$(PREFIX)/lib/$(lib_so) - rm -f $(DESTDIR)$(PREFIX)/lib/$(lib_a) - [ -n "$(devlink)" ] && \ - rm -f $(DESTDIR)$(PREFIX)/lib/$(soname) && \ - rm -f $(DESTDIR)$(PREFIX)/lib/$(devlink) || \ - true diff -r 25b911c7c35c -r b4c9a24c946e Makefile.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile.in Sun Nov 24 13:30:44 2013 +0200 @@ -0,0 +1,78 @@ + +csrc = $(wildcard src/*.c) +ccsrc = $(wildcard src/*.cc) +obj = $(csrc:.c=.o) $(ccsrc:.cc=.o) +dep = $(obj:.o=.d) +name = goat3dgfx +lib_a = lib$(name).a + +so_major = 0 +so_minor = 1 + +ifeq ($(shell uname -r), Darwin) + lib_so = lib$(name).dylib + shared = -dynamiclib +else + lib_so = lib$(name).so.$(so_major).$(so_minor) + soname = lib$(name).so.$(so_major) + devlink = lib$(name).so + shared = -shared -Wl,-soname=$(soname) + pic = -fPIC +endif + +warn = -Wall + +libs_ldflags = -limago -lanim -lpsys -lvmath + +CFLAGS = -pedantic $(warn) $(dbg) $(pic) $(opt) $(inc) $(cfg_cflags) $(libs_cflags) +CXXFLAGS = $(CFLAGS) +LDFLAGS = $(cfg_ldflags) $(libs_ldflags) + +.PHONY: all +all: $(lib_so) $(lib_a) + +$(lib_a): $(obj) + $(AR) rcs $@ $(obj) + +$(lib_so): $(obj) + $(CXX) $(shared) -o $@ $(obj) $(LDFLAGS) + +-include $(dep) + +%.d: %.c + @$(CPP) $(CFLAGS) $< -MM -MT $(@:.d=.o) >$@ + +%.d: %.cc + @$(CPP) $(CXXFLAGS) $< -MM -MT $(@:.d=.o) >$@ + +.PHONY: clean +clean: + rm -f $(obj) $(lib_a) $(lib_so) + +.PHONY: cleandep +cleandep: + rm -f $(dep) + +.PHONY: install +install: $(lib_so) $(lib_a) + mkdir -p $(DESTDIR)$(PREFIX)/lib $(DESTDIR)$(PREFIX)/include/goat3dgfx + cp src/*.h src/*.inl $(DESTDIR)$(PREFIX)/include/goat3dgfx/ + cp $(lib_a) $(DESTDIR)$(PREFIX)/lib/$(lib_a) + cp $(lib_so) $(DESTDIR)$(PREFIX)/lib/$(lib_so) + [ -n "$(devlink)" ] && \ + cd $(DESTDIR)$(PREFIX)/lib && \ + rm -f $(soname) $(devlink) && \ + ln -s $(lib_so) $(soname) && \ + ln -s $(soname) $(devlink) || \ + true + +.PHONY: uninstall +uninstall: + rm -f $(DESTDIR)$(PREFIX)/include/goat3dgfx/* + rmdir $(DESTDIR)$(PREFIX)/include/goat3dgfx + rm -f $(DESTDIR)$(PREFIX)/lib/$(lib_so) + rm -f $(DESTDIR)$(PREFIX)/lib/$(lib_a) + [ -n "$(devlink)" ] && \ + rm -f $(DESTDIR)$(PREFIX)/lib/$(soname) && \ + rm -f $(DESTDIR)$(PREFIX)/lib/$(devlink) || \ + true diff -r 25b911c7c35c -r b4c9a24c946e configure --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure Sun Nov 24 13:30:44 2013 +0200 @@ -0,0 +1,211 @@ +#!/bin/sh + +prefix=/usr/local +opt=false +dbg=true +vr=true + +for arg; do + case "$arg" in + --prefix=*) + value=`echo $arg | sed 's/--prefix=//'` + prefix=${value:-$prefix} + ;; + + --enable-opt) + opt=true;; + --disable-opt) + opt=false;; + + --enable-debug) + dbg=true;; + --disable-debug) + dbg=false;; + + --enable-vr) + vr=true;; + --disable-vr) + vr=false;; + + --help) + echo 'usage: ./configure [options]' + echo 'options:' + echo ' --prefix=: installation path (default: /usr/local)' + echo ' --enable-/--disable-: enable/disable features where foo is:' + echo ' opt: speed optimizations' + echo ' dbg: debugging symbols' + echo ' vr: support for virtual reality' + echo 'all invalid options are silently ignored' + exit 0 + ;; + esac +done + +begin_emit() +{ + emit_file=$1 + cat /dev/null >$1 +} + +emit() +{ + echo $* >>$emit_file +} + + +tmpfile_prefix=/tmp/goat3dgfx_configure- +build_log=/tmp/goat3dgfx_configure.log + +check_ovr() +{ + tmpfile_bin=${tmpfile_prefix}check_ovr + tmpfile_src=${tmpfile_bin}.cc + + begin_emit $tmpfile_src + emit '#include ' + emit 'int main() {}' + + echo -n 'checking for LibOVR ... ' + + if ! c++ $CFLAGS -o $tmpfile_bin $tmpfile_src -lovr >$build_log 2>&1; then + echo not found! + exit 1 + else + echo ok + fi + + LDFLAGS="$LDFLAGS -lovr" + rm -f $tmpfile_bin $tmpfile_src +} + +check_glew() +{ + tmpfile_bin=${tmpfile_prefix}check_glew + tmpfile_src=${tmpfile_bin}.c + + begin_emit $tmpfile_src + emit '#include ' + emit 'int main() { return 0; }' + + echo -n 'checking for GLEW ... ' + + if ! cc $CFLAGS -o $tmpfile_bin $tmpfile_src -lGLEW >$build_log 2>&1; then + echo not found! + exit 1 + else + echo ok + fi + + LDFLAGS="$LDFLAGS -lGLEW" + rm -f $tmpfile_bin $tmpfile_src +} + +check_opengl() +{ + tmpfile_bin=${tmpfile_prefix}check_gl + tmpfile_src=${tmpfile_bin}.c + + echo -n 'checking for OpenGL ... ' + + begin_emit $tmpfile_src + if [ "`uname -s`" = Darwin ]; then + emit '#include ' + + libgl='-framework OpenGL' + else + emit '#include ' + + if uname -s | grep MINGW; then + libgl='-lopengl32 -lglu32' + else + libgl='-lGL -lGLU' + fi + fi + emit 'int main() { return 0; }' + + if ! cc $CFLAGS -o $tmpfile_bin $tmpfile_src $libgl >$build_log 2>&1; then + echo not found! + exit 1 + else + echo ok + fi + + LDFLAGS="$LDFLAGS $libgl" + rm -f $tmpfile_bin $tmpfile_src +} + +check_glut() +{ + tmpfile_bin=${tmpfile_prefix}check_glut + tmpfile_src=${tmpfile_bin}.c + + echo -n 'checking for GLUT ... ' + + begin_emit $tmpfile_src + if [ "`uname -s`" = Darwin ]; then + emit '#include ' + + libglut='-framework GLUT' + else + emit '#include ' + + if uname -s | grep MINGW; then + libglut='-lglut32' + else + libglut='-lglut' + fi + fi + emit 'int main() { return 0; }' + + if ! cc $CFLAGS -o $tmpfile_bin $tmpfile_src $libglut >$build_log 2>&1; then + echo not found! + exit 1 + else + echo ok + fi + + LDFLAGS="$LDFLAGS $libglut" + rm -f $tmpfile_bin $tmpfile_src +} + +gen_config() +{ + echo "generating: src/config.h ..." + begin_emit src/config.h + + emit '#ifndef GOAT3DGFX_CONFIG_H_' + emit '#define GOAT3DGFX_CONFIG_H_' + + if $vr; then + emit '#define USE_VR' + emit '#define USE_LIBOVR' + else + emit '#undef USE_VR' + fi + + emit '#endif /* GOAT3DGFX_CONFIG_H_ */' +} + + +gen_makefile() +{ + echo "generating: Makefile ..." + begin_emit Makefile + + emit '# this makefile is automatically generated. do not edit!' + emit "PREFIX = $prefix" + if $opt; then emit 'opt = -O3'; fi + if $dbg; then emit 'dbg = -g'; fi + emit "cfg_cflags = $CFLAGS" + emit "cfg_ldflags = $LDFLAGS" + + cat Makefile.in >>Makefile +} + +check_opengl +check_glut +check_glew +if $vr; then check_ovr; fi + +gen_makefile +gen_config diff -r 25b911c7c35c -r b4c9a24c946e src/goat3dgfx.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/goat3dgfx.cc Sun Nov 24 13:30:44 2013 +0200 @@ -0,0 +1,14 @@ +#include "goat3dgfx.h" + +bool init_goat_graphics() +{ + log_info("initializing goat3d graphics\n"); + + glewInit(); + + return true; +} + +void shutdown_goat_graphics() +{ +} diff -r 25b911c7c35c -r b4c9a24c946e src/goat3dgfx.h --- a/src/goat3dgfx.h Mon Nov 18 04:10:19 2013 +0200 +++ b/src/goat3dgfx.h Sun Nov 24 13:30:44 2013 +0200 @@ -27,4 +27,7 @@ #include #include +bool init_goat_graphics(); +void shutdown_goat_graphics(); + #endif // GOAT3DGFX_H_