Skip to content

Instantly share code, notes, and snippets.

@yamamushi
Created June 17, 2014 06:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yamamushi/99b4e29f75a521ef2ef8 to your computer and use it in GitHub Desktop.
Save yamamushi/99b4e29f75a521ef2ef8 to your computer and use it in GitHub Desktop.
OSX Makefile for libtcod
# libtcod makefile
# to build debug version, run "make -f makefile-linux debug"
# to build release version, run "make -f makefile-linux release"
SRCDIR=src
INCDIR=include
#dependencies
# SDL
SDL_FLAGS=`sdl-config --cflags`
SDL_LIBS=`sdl-config --libs`
# ZLIB
ZLIB_FLAGS=
ZLIB_LIBS=-lz
#OPENGL
OPENGL_LIB=-framework OpenGL
# Mac support
OSXCOMPAT = osx/macsupport.m -framework Cocoa
CFLAGS=$(FLAGS) -I$(INCDIR) -I$(INCDIR)/gui -Wall $(SDL_FLAGS) $(ZLIB_FLAGS) -fno-strict-aliasing -fPIC -ansi
TEMP=/tmp
CC=gcc
CPP=g++
.SUFFIXES: a .o .h .c
$(TEMP)/libtcod/release/%.o : $(SRCDIR)/%.c
$(CC) $(CFLAGS) -DNDEBUG -O2 -s -o $@ -c $<
$(TEMP)/libtcod/release/%.o : $(SRCDIR)/%.cpp
$(CPP) $(CFLAGS) -DNDEBUG -O2 -s -o $@ -c $<
$(TEMP)/libtcod/release/gui/%.o : $(SRCDIR)/gui/%.cpp
$(CPP) $(CFLAGS) -DNDEBUG -O2 -s -o $@ -c $<
$(TEMP)/libtcod/debug/%.o : $(SRCDIR)/%.c
$(CC) $(CFLAGS) -g -o $@ -c $<
$(TEMP)/libtcod/debug/%.o : $(SRCDIR)/%.cpp
$(CPP) $(CFLAGS) -g -o $@ -c $<
$(TEMP)/libtcod/debug/gui/%.o : $(SRCDIR)/gui/%.cpp
$(CPP) $(CFLAGS) -g -o $@ -c $<
LIBOBJS_C_DEBUG= \
$(TEMP)/libtcod/debug/bresenham_c.o \
$(TEMP)/libtcod/debug/bsp_c.o \
$(TEMP)/libtcod/debug/color_c.o \
$(TEMP)/libtcod/debug/console_c.o \
$(TEMP)/libtcod/debug/fov_c.o \
$(TEMP)/libtcod/debug/fov_circular_raycasting.o \
$(TEMP)/libtcod/debug/fov_diamond_raycasting.o \
$(TEMP)/libtcod/debug/fov_recursive_shadowcasting.o \
$(TEMP)/libtcod/debug/fov_permissive2.o \
$(TEMP)/libtcod/debug/fov_restrictive.o \
$(TEMP)/libtcod/debug/heightmap_c.o \
$(TEMP)/libtcod/debug/image_c.o \
$(TEMP)/libtcod/debug/lex_c.o \
$(TEMP)/libtcod/debug/list_c.o \
$(TEMP)/libtcod/debug/mersenne_c.o \
$(TEMP)/libtcod/debug/noise_c.o \
$(TEMP)/libtcod/debug/parser_c.o \
$(TEMP)/libtcod/debug/path_c.o \
$(TEMP)/libtcod/debug/sys_c.o \
$(TEMP)/libtcod/debug/sys_opengl_c.o \
$(TEMP)/libtcod/debug/sys_sdl_c.o \
$(TEMP)/libtcod/debug/sys_sdl12_c.o \
$(TEMP)/libtcod/debug/sys_sdl_img_bmp.o \
$(TEMP)/libtcod/debug/sys_sdl_img_png.o \
$(TEMP)/libtcod/debug/tree_c.o \
$(TEMP)/libtcod/debug/txtfield_c.o \
$(TEMP)/libtcod/debug/wrappers.o \
$(TEMP)/libtcod/debug/zip_c.o \
$(TEMP)/libtcod/debug/namegen_c.o \
$(TEMP)/libtcod/debug/png/lodepng.o
LIBOBJS_CPP_DEBUG= \
$(TEMP)/libtcod/debug/bresenham.o \
$(TEMP)/libtcod/debug/bsp.o \
$(TEMP)/libtcod/debug/color.o \
$(TEMP)/libtcod/debug/console.o \
$(TEMP)/libtcod/debug/fov.o \
$(TEMP)/libtcod/debug/heightmap.o \
$(TEMP)/libtcod/debug/image.o \
$(TEMP)/libtcod/debug/lex.o \
$(TEMP)/libtcod/debug/mersenne.o \
$(TEMP)/libtcod/debug/mouse.o \
$(TEMP)/libtcod/debug/noise.o \
$(TEMP)/libtcod/debug/parser.o \
$(TEMP)/libtcod/debug/path.o \
$(TEMP)/libtcod/debug/sys.o \
$(TEMP)/libtcod/debug/txtfield.o \
$(TEMP)/libtcod/debug/zip.o \
$(TEMP)/libtcod/debug/namegen.o
GUIOBJS_DEBUG= \
$(TEMP)/libtcod/debug/gui/button.o \
$(TEMP)/libtcod/debug/gui/container.o \
$(TEMP)/libtcod/debug/gui/flatlist.o \
$(TEMP)/libtcod/debug/gui/hbox.o \
$(TEMP)/libtcod/debug/gui/image.o \
$(TEMP)/libtcod/debug/gui/label.o \
$(TEMP)/libtcod/debug/gui/radiobutton.o \
$(TEMP)/libtcod/debug/gui/slider.o \
$(TEMP)/libtcod/debug/gui/statusbar.o \
$(TEMP)/libtcod/debug/gui/textbox.o \
$(TEMP)/libtcod/debug/gui/togglebutton.o \
$(TEMP)/libtcod/debug/gui/toolbar.o \
$(TEMP)/libtcod/debug/gui/vbox.o \
$(TEMP)/libtcod/debug/gui/widget.o
LIBOBJS_C_RELEASE= \
$(TEMP)/libtcod/release/bresenham_c.o \
$(TEMP)/libtcod/release/bsp_c.o \
$(TEMP)/libtcod/release/color_c.o \
$(TEMP)/libtcod/release/console_c.o \
$(TEMP)/libtcod/release/fov_c.o \
$(TEMP)/libtcod/release/fov_circular_raycasting.o \
$(TEMP)/libtcod/release/fov_diamond_raycasting.o \
$(TEMP)/libtcod/release/fov_recursive_shadowcasting.o \
$(TEMP)/libtcod/release/fov_permissive2.o \
$(TEMP)/libtcod/release/fov_restrictive.o \
$(TEMP)/libtcod/release/heightmap_c.o \
$(TEMP)/libtcod/release/image_c.o \
$(TEMP)/libtcod/release/lex_c.o \
$(TEMP)/libtcod/release/list_c.o \
$(TEMP)/libtcod/release/mersenne_c.o \
$(TEMP)/libtcod/release/noise_c.o \
$(TEMP)/libtcod/release/parser_c.o \
$(TEMP)/libtcod/release/path_c.o \
$(TEMP)/libtcod/release/sys_c.o \
$(TEMP)/libtcod/release/sys_opengl_c.o \
$(TEMP)/libtcod/release/sys_sdl_c.o \
$(TEMP)/libtcod/release/sys_sdl12_c.o \
$(TEMP)/libtcod/release/sys_sdl_img_bmp.o \
$(TEMP)/libtcod/release/sys_sdl_img_png.o \
$(TEMP)/libtcod/release/txtfield_c.o \
$(TEMP)/libtcod/release/tree_c.o \
$(TEMP)/libtcod/release/wrappers.o \
$(TEMP)/libtcod/release/zip_c.o \
$(TEMP)/libtcod/release/namegen_c.o \
$(TEMP)/libtcod/release/png/lodepng.o
LIBOBJS_CPP_RELEASE= \
$(TEMP)/libtcod/release/bresenham.o \
$(TEMP)/libtcod/release/bsp.o \
$(TEMP)/libtcod/release/color.o \
$(TEMP)/libtcod/release/console.o \
$(TEMP)/libtcod/release/fov.o \
$(TEMP)/libtcod/release/heightmap.o \
$(TEMP)/libtcod/release/image.o \
$(TEMP)/libtcod/release/lex.o \
$(TEMP)/libtcod/release/mersenne.o \
$(TEMP)/libtcod/release/mouse.o \
$(TEMP)/libtcod/release/noise.o \
$(TEMP)/libtcod/release/parser.o \
$(TEMP)/libtcod/release/path.o \
$(TEMP)/libtcod/release/sys.o \
$(TEMP)/libtcod/release/txtfield.o \
$(TEMP)/libtcod/release/zip.o \
$(TEMP)/libtcod/release/namegen.o
GUIOBJS_RELEASE= \
$(TEMP)/libtcod/release/gui/button.o \
$(TEMP)/libtcod/release/gui/container.o \
$(TEMP)/libtcod/release/gui/flatlist.o \
$(TEMP)/libtcod/release/gui/hbox.o \
$(TEMP)/libtcod/release/gui/image.o \
$(TEMP)/libtcod/release/gui/label.o \
$(TEMP)/libtcod/release/gui/radiobutton.o \
$(TEMP)/libtcod/release/gui/slider.o \
$(TEMP)/libtcod/release/gui/statusbar.o \
$(TEMP)/libtcod/release/gui/textbox.o \
$(TEMP)/libtcod/release/gui/togglebutton.o \
$(TEMP)/libtcod/release/gui/toolbar.o \
$(TEMP)/libtcod/release/gui/vbox.o \
$(TEMP)/libtcod/release/gui/widget.o
all : debug release
debug : libtcod_debug.dylib libtcodxx_debug.dylib libtcodgui_debug.dylib
release : libtcod.dylib libtcodxx.dylib libtcodgui.dylib
$(TEMP)/libtcod/debug/png :
mkdir -p $@
$(TEMP)/libtcod/debug/gui :
mkdir -p $@
$(TEMP)/libtcod/release/png :
mkdir -p $@
$(TEMP)/libtcod/release/gui :
mkdir -p $@
libtcod.a : $(LIBOBJS_C_DEBUG)
ar r $@ $(LIBOBJS_C_DEBUG)
libtcodxx.a : $(LIBOBJS_CPP_DEBUG)
ar r $@ $(LIBOBJS_CPP_DEBUG)
libtcod.dylib : $(TEMP)/libtcod/release/png $(LIBOBJS_C_RELEASE)
g++ -shared -Wl,-install_name,$@ -o $@ $(LIBOBJS_C_RELEASE) $(OSXCOMPAT) $(ZLIB_LIBS) $(SDL_LIBS) $(CFLAGS) $(OPENGL_LIB)
libtcodxx.dylib : $(TEMP)/libtcod/release/png $(LIBOBJS_CPP_RELEASE)
g++ -shared -Wl,-install_name,$@ -o $@ $(LIBOBJS_CPP_RELEASE) $(OSXCOMPAT) -L. -ltcod $(CFLAGS)
libtcodgui.dylib : $(TEMP)/libtcod/release/gui $(GUIOBJS_RELEASE)
g++ -shared -Wl,-install_name,$@ -o $@ $(GUIOBJS_RELEASE) $(OSXCOMPAT) -L. -ltcod -ltcodxx $(CFLAGS)
libtcod_debug.dylib : $(TEMP)/libtcod/debug/png $(LIBOBJS_C_DEBUG)
g++ -shared -Wl,-install_name,$@ -o $@ $(LIBOBJS_C_DEBUG) $(OSXCOMPAT) $(ZLIB_LIBS) $(SDL_LIBS) $(CFLAGS) $(OPENGL_LIB)
libtcodxx_debug.dylib : $(TEMP)/libtcod/debug/png $(LIBOBJS_CPP_DEBUG)
g++ -shared -Wl,-install_name,$@ -o $@ $(LIBOBJS_CPP_DEBUG) $(OSXCOMPAT) -L. -ltcod_debug $(CFLAGS)
libtcodgui_debug.dylib : $(TEMP)/libtcod/debug/gui $(GUIOBJS_DEBUG)
g++ -shared -Wl,-install_name,$@ -o $@ $(GUIOBJS_DEBUG) $(OSXCOMPAT) -L. -ltcod_debug -ltcodxx_debug $(CFLAGS)
clean :
\rm -f $(LIBOBJS_C_RELEASE) $(LIBOBJS_CPP_RELEASE) $(GUIOBJS_RELEASE) $(LIBOBJS_C_DEBUG) $(LIBOBJS_CPP_DEBUG) $(GUIOBJS_DEBUG) libtcod.a libtcodxx.a libtcod.dylib libtcodxx.dylib libtcodgui.dylib libtcod_debug.dylib libtcodxx_debug.dylib libtcodgui_debug.dylib libtcodpy.pyc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment