Makefile 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # General makefile for generic unix & linux platforms
  2. TARGET = sdlpal
  3. TEST_TARGET = ./sdlpal-tests
  4. HOST =
  5. TEST_CCFLAGS =
  6. DEPFLAGS = -MT $@ -MMD -MP -MF $*.Td
  7. GTEST_DIR = ../3rd/googletest/googletest
  8. CFILES = $(wildcard ../adplug/*.c) $(wildcard ../libmad/*.c) $(wildcard ../liboggvorbis/src/*.c) $(wildcard ../*.c)
  9. CPPFILES = $(wildcard ../adplug/*.cpp) $(wildcard ../*.cpp) $(wildcard ./*.cpp)
  10. OBJFILES = $(CFILES:.c=.o) $(CPPFILES:.cpp=.o)
  11. DEPFILES = $(OBJFILES:.o=.d)
  12. TEST_CPPFILES = $(wildcard ../tests/*.cpp)
  13. TEST_OBJFILES = $(TEST_CPPFILES:.cpp=.o)
  14. CCFLAGS = `sdl2-config --cflags` -g -Wall -O2 -fno-strict-aliasing -I. -I../ -I../liboggvorbis/include -I../liboggvorbis/src -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(TEST_CCFLAGS)
  15. CXXFLAGS = $(CCFLAGS) -std=c++11 `fltk-config --cxxflags`
  16. CFLAGS = $(CCFLAGS) -std=gnu99 `fltk-config --cflags`
  17. LDFLAGS = `sdl2-config --libs` `fltk-config --ldflags` -lstdc++ -lm -pthread
  18. TEST_CXXFLAGS += -isystem $(GTEST_DIR)/include -I $(GTEST_DIR) -g -Wall -Wextra -pthread
  19. POSTCOMPILE = @mv -f $*.Td $*.d && touch $@
  20. .PHONY : all clean check
  21. all: $(TARGET)
  22. $(TARGET): $(OBJFILES)
  23. @echo [LD] $@
  24. @$(HOST)gcc $^ -o $@ $(LDFLAGS)
  25. gtest-all.o : $(GTEST_DIR)/src/gtest-all.cc %.d
  26. @echo [CC] $<
  27. @$(HOST)g++ $(DEPFLAGS) $(TEST_CXXFLAGS) -c $< -o $@
  28. $(POSTCOMPILE)
  29. %.o: %.c %.d
  30. @echo [CC] $<
  31. @$(HOST)gcc $(DEPFLAGS) $(CFLAGS) -c $< -o $@
  32. $(POSTCOMPILE)
  33. %.o: %.cpp %.d
  34. @echo [CC] $<
  35. @$(HOST)g++ $(DEPFLAGS) $(CXXFLAGS) -c $< -o $@
  36. $(POSTCOMPILE)
  37. $(TEST_TARGET): $(OBJFILES) $(TEST_OBJFILES) gtest-all.o
  38. @echo [LD] $@
  39. @$(HOST)g++ $^ -o $@ $(LDFLAGS) -lpthread
  40. clean:
  41. -rm -f $(TARGET) $(TEST_TARGET) $(OBJFILES) $(TEST_OBJFILES) $(DEPFILES)
  42. %.d: ;
  43. .PRECIOUS: %.d
  44. -include $(DEPFILES)
  45. check: TEST_CCFLAGS = -DUNIT_TEST=1 -isystem $(GTEST_DIR)/include
  46. check: $(TEST_TARGET)
  47. @echo [EXEC] $(TEST_TARGET)
  48. @chmod +x $(TEST_TARGET)
  49. @exec $(TEST_TARGET)