makeSo.tpl 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # I release this sample under the MIT license: free for any use, provided
  2. # you hold me harmless from any such use you make, and you retain my
  3. # copyright on the actual sources.
  4. # Copyright 2005 Jon Watte.
  5. # Dynamic Library Template
  6. # If this errors out, you didn't specify the right variable value, or
  7. # you're including the wrong template makefile.
  8. LIBNAME := {$projName}
  9. {assign var="dirWalk" value=$fileArray}
  10. SOURCES := {foreach from=$dirWalk item=file key=key}
  11. {include file="make_fileRecurse.tpl" dirWalk=$file}
  12. {/foreach}
  13. LDFLAGS_{$projName} := -g -m32 -shared
  14. LDLIBS_{$projName} := -lstdc++ -lSDL -lpthread
  15. CFLAGS_{$projName} := -MMD -I. -m32 -mmmx -msse -march=i686
  16. {foreach item=def from=$projIncludes}CFLAGS_{$projName} += -I{$def}
  17. {/foreach}
  18. CFLAGS_{$projName} += -DUNICODE
  19. {foreach item=def from=$projDefines}CFLAGS_{$projName} += -D{$def}
  20. {/foreach}
  21. CFLAGS_DEBUG_{$projName} := $(CFLAGS_{$projName}) -ggdb
  22. CFLAGS_DEBUG_{$projName} += -DTORQUE_DEBUG
  23. CFLAGS_DEBUG_{$projName} += -DTORQUE_DEBUG_GUARD
  24. CFLAGS_DEBUG_{$projName} += -DTORQUE_NET_STATS
  25. CFLAGS_{$projName} += -O3
  26. #CC := gcc
  27. LD := gcc
  28. SHARED_LIB_TARGETS += {$projName}.so
  29. SHARED_LIB_TARGETS_DEBUG += {$projName}_DEBUG.so
  30. OBJS_{$projName} := $(patsubst ../../../../Engine/source/%,Release/{$projName}/%.o,$(SOURCES))
  31. OBJS_{$projName} += $(patsubst ../../source/%,Release/{$projName}/%.o,$(SOURCES))
  32. OBJS_{$projName} := $(filter %.o, $(OBJS_{$projName}))
  33. OBJS_{$projName}_DEBUG := $(patsubst ../../../../Engine/source/%,Debug/{$projName}/%.o,$(SOURCES))
  34. OBJS_{$projName}_DEBUG += $(patsubst ../../source/%, Debug/{$projName}/%.o,$(SOURCES))
  35. OBJS_{$projName}_DEBUG := $(filter %.o, $(OBJS_{$projName}_DEBUG))
  36. # Deriving the variable name from the target name is the secret sauce
  37. # of the build system.
  38. #
  39. {$projName}.so: $(OBJS_{$projName}) $(LIB_TARGETS)
  40. $(LD) $(LDFLAGS_{$projName}) -o $@ $(OBJS_{$projName}) $(LIB_TARGETS) $(LDLIBS_{$projName})
  41. {$projName}_DEBUG.so: $(OBJS_{$projName}_DEBUG) $(LIB_TARGETS_DEBUG)
  42. $(LD) $(LDFLAGS_{$projName}) -o $@ $(OBJS_{$projName}_DEBUG) $(LIB_TARGETS_DEBUG) $(LDLIBS_{$projName})
  43. Release/{$projName}/%.asm.o: ../../../../Engine/source/%.asm
  44. @mkdir -p $(dir $@)
  45. nasm -f elf $< -o $@
  46. Release/{$projName}/%.o: ../../../../Engine/source/%
  47. @mkdir -p $(dir $@)
  48. $(CC) -c $(CFLAGS_{$projName}) $< -o $@
  49. Release/{$projName}/%.o: ../../source/%
  50. @mkdir -p $(dir $@)
  51. $(CC) -c $(CFLAGS_{$projName}) $< -o $@
  52. Debug/{$projName}/%.asm.o: ../../../../Engine/source/%.asm
  53. @mkdir -p $(dir $@)
  54. nasm -f elf $< -o $@
  55. Debug/{$projName}/%.o: ../../../../Engine/source/%
  56. @mkdir -p $(dir $@)
  57. $(CC) -c $(CFLAGS_DEBUG_{$projName}) $< -o $@
  58. Debug/{$projName}/%.o: ../../source/%
  59. @mkdir -p $(dir $@)
  60. $(CC) -c $(CFLAGS_DEBUG_{$projName}) $< -o $@
  61. release_{$projName}: {$projName}.so
  62. debug_{$projName}: {$projName}_DEBUG.so
  63. .PHONY: debug_{$projName} release_{$projName}
  64. DEPS += $(patsubst %.o,%.d,$(OBJS_{$projName}))
  65. DEPS += $(patsubst %.o,%.d,$(OBJS_{$projName}_DEBUG))