From a5bcb3f5471e3cbf4162b2422162970d5743de34 Mon Sep 17 00:00:00 2001 From: zv0n Date: Sun, 22 Nov 2020 23:39:49 +0100 Subject: [PATCH] Tetris: update to use dll library on windows --- tetris/Makefile | 55 ++++++++++++++++++++++++++++++++--------------- tetris/tetris.cpp | 2 +- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/tetris/Makefile b/tetris/Makefile index 09117e5..8852a2a 100644 --- a/tetris/Makefile +++ b/tetris/Makefile @@ -1,15 +1,22 @@ -CXX ?= g++ -CFLAGS ?= -O2 -Wall -Wextra -std=c++14 PREFIX ?= /usr/local/bin -LDFLAGS ?= -lSDL2 -lSDL2_image -lSDL2_gfx -lSDL2_ttf -pthread ifeq ($(OS),Windows_NT) UNAME_S := Windows +CXX = cl +CXXFLAGS = -MD -EHsc +OBJEXT = obj +LDFLAGS = +OUTPUTFLAG = -Fo else UNAME_S := $(shell uname -s) +CXX ?= g++ +CXXFLAGS = -std=c++14 -Wall -Wextra -pedantic -O2 +OBJEXT = o +LDFLAGS ?= -lSDL2 -lSDL2_image -lSDL2_gfx -lSDL2_ttf -pthread +OUTPUTFLAG = -o endif -TETRIS_OBJECTS = tetris.o scenes.o config.o functions.o global_vars.o +TETRIS_OBJECTS = tetris.${OBJEXT} scenes.${OBJEXT} config.${OBJEXT} functions.${OBJEXT} global_vars.${OBJEXT} ifeq ($(UNAME_S),Linux) TETRIS_OBJECTS += libsdlpp.so @@ -17,23 +24,33 @@ endif ifeq ($(UNAME_S),Darwin) TETRIS_OBJECTS += libsdlpp.dylib endif +ifeq ($(UNAME_S),Windows) +TETRIS_OBJECTS += ../sdlpp/SDL2/SDL2_framerate.c ../sdlpp/SDL2/SDL2_gfxPrimitives.c ../sdlpp/SDL2/SDL2_imageFilter.c ../sdlpp/SDL2/SDL2_rotozoom.c +SDLLIB = libsdlpp.dll +endif .PHONY: default default: tetris -tetris: ${TETRIS_OBJECTS} - $(CXX) $(CFLAGS) -o $@ $^ ${LDFLAGS} -L $(shell pwd) -lsdlpp +ifeq ($(UNAME_S),Windows) +tetris: ${TETRIS_OBJECTS} ${SDLLIB} + $(CXX) $(CXXFLAGS) -Fe"$@" ${TETRIS_OBJECTS} /link ..\sdlpp\SDL2.lib ..\sdlpp\SDL2_ttf.lib ..\sdlpp\SDL2_image.lib libsdlpp.lib -tetris.o: tetris.cpp ../sdlpp/sdlpp.hpp config.hpp custom_classes.hpp scenes.hpp global_vars.hpp functions.hpp - $(CXX) $(CFLAGS) -c -o $@ $< -scenes.o: scenes.cpp ../sdlpp/sdlpp.hpp config.hpp scenes.hpp functions.hpp global_vars.hpp - $(CXX) $(CFLAGS) -c -o $@ $< -config.o: config.cpp config.hpp - $(CXX) $(CFLAGS) -c -o $@ $< -functions.o: functions.cpp config.hpp functions.hpp global_vars.hpp scenes.hpp - $(CXX) $(CFLAGS) -c -o $@ $< -global_vars.o: global_vars.cpp config.hpp global_vars.hpp functions.hpp - $(CXX) $(CFLAGS) -c -o $@ $< +else +tetris: ${TETRIS_OBJECTS} + $(CXX) $(CXXFLAGS) -o $@ $^ ${LDFLAGS} -L $(shell pwd) -lsdlpp +endif + +tetris.${OBJEXT}: tetris.cpp ../sdlpp/sdlpp.hpp config.hpp custom_classes.hpp scenes.hpp global_vars.hpp functions.hpp + $(CXX) $(CXXFLAGS) -c ${OUTPUTFLAG}$@ $< +scenes.${OBJEXT}: scenes.cpp ../sdlpp/sdlpp.hpp config.hpp scenes.hpp functions.hpp global_vars.hpp + $(CXX) $(CXXFLAGS) -c ${OUTPUTFLAG}$@ $< +config.${OBJEXT}: config.cpp config.hpp + $(CXX) $(CXXFLAGS) -c ${OUTPUTFLAG}$@ $< +functions.${OBJEXT}: functions.cpp config.hpp functions.hpp global_vars.hpp scenes.hpp + $(CXX) $(CXXFLAGS) -c ${OUTPUTFLAG}$@ $< +global_vars.${OBJEXT}: global_vars.cpp config.hpp global_vars.hpp functions.hpp + $(CXX) $(CXXFLAGS) -c ${OUTPUTFLAG}$@ $< libsdlpp.so: ../sdlpp $(MAKE) -C ../sdlpp cp ../sdlpp/libsdlpp.so . @@ -41,9 +58,13 @@ libsdlpp.so: ../sdlpp libsdlpp.dylib: ../sdlpp $(MAKE) -C ../sdlpp cp ../sdlpp/libsdlpp.dylib . +libsdlpp.dll: ../sdlpp + $(MAKE) -C ../sdlpp + cp ../sdlpp/libsdlpp.dll . + cp ../sdlpp/libsdlpp.lib . start: LD_LIBRARY_PATH=$$(pwd) ./tetris clean: - rm -Rf *.o tetris + rm -Rf *.${OBJEXT} tetris diff --git a/tetris/tetris.cpp b/tetris/tetris.cpp index 1a8ec51..c1c1c27 100644 --- a/tetris/tetris.cpp +++ b/tetris/tetris.cpp @@ -8,7 +8,7 @@ #include #include #ifdef _WIN32 -#include "../SDL2/SDL2_framerate.h" +#include "../sdlpp/SDL2/SDL2_framerate.h" #include #include #include