Skip to content

Commit

Permalink
Use cmake
Browse files Browse the repository at this point in the history
  • Loading branch information
gdonald committed Nov 11, 2019
1 parent 69c1aac commit 348e0bd
Show file tree
Hide file tree
Showing 9 changed files with 236 additions and 32 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@ blackjack
*~
bj.txt
.idea
CMakeCache.txt
CMakeFiles
Makefile
cmake_install.cmake
blackjack.cbp
23 changes: 23 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
cmake_minimum_required(VERSION 3.10)

project(blackjack)

include_directories(include)
include(FindPackageHandleStandardArgs)

set(CMAKE_C_COMPILER clang)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")

find_package(SDL2 REQUIRED)
find_package(SDL2_gfx REQUIRED)
find_package(SDL2_ttf REQUIRED)

include_directories(${SDL2_INCLUDE_DIRS} ${SDL2_GFX_INCLUDE_DIRS} ${SDL2_TTF_INCLUDE_DIRS})

file(GLOB sources src/*.c)
add_executable(blackjack ${sources})
target_link_libraries(blackjack ${SDL2_LIBRARIES} ${SDL2_GFX_LIBRARIES} ${SDL2_TTF_LIBRARIES})

add_custom_command(TARGET blackjack
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:blackjack> .)
21 changes: 0 additions & 21 deletions Makefile

This file was deleted.

23 changes: 17 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,27 @@
# blackjack-c-sdl
Blackjack written in C using SDL

## Dependencies
![Blackjack](https://raw.githubusercontent.com/gdonald/blackjack-c-sdl/master/img/ss.png)

## Install

### Linux

For Debian:

apt install cmake clang libsdl2-dev libsdl2-gfx-dev libsdl2-ttf-dev

apt install clang libsdl2-dev libsdl2-gfx-dev libsdl2-ttf-dev
### Mac OS

Install Xcode to acquire `clang`. Next install Homebrew and do

brew install cmake sdl2 sdl2_gfx sdl2_ttf

## Build

make
cmake .
make

## Run

./blackjack

![Blackjack](https://raw.githubusercontent.com/gdonald/blackjack-c-sdl/master/img/ss.png)
./blackjack
Empty file added build/.keep
Empty file.
93 changes: 93 additions & 0 deletions cmake/FindSDL2_gfx.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# - Locate SDL2_gfx library
# This module defines:
# SDL2_GFX_LIBRARIES, the name of the library to link against
# SDL2_GFX_INCLUDE_DIRS, where to find the headers
# SDL2_GFX_FOUND, if false, do not try to link against
# SDL2_GFX_VERSION_STRING - human-readable string containing the version of SDL2_gfx
#
# For backward compatiblity the following variables are also set:
# SDL2GFX_LIBRARY (same value as SDL2_GFX_LIBRARIES)
# SDL2GFX_INCLUDE_DIR (same value as SDL2_GFX_INCLUDE_DIRS)
# SDL2GFX_FOUND (same value as SDL2_GFX_FOUND)
#
# $SDL2DIR is an environment variable that would
# correspond to the ./configure --prefix=$SDL2DIR
# used in building SDL2.
#
# Created by Eric Wing. This was influenced by the FindSDL2.cmake
# module, but with modifications to recognize OS X frameworks and
# additional Unix paths (FreeBSD, etc).

#=============================================================================
# Copyright 2005-2009 Kitware, Inc.
# Copyright 2012 Benjamin Eikel
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)

if(NOT SDL2_GFX_INCLUDE_DIR AND SDL2GFX_INCLUDE_DIR)
set(SDL2_GFX_INCLUDE_DIR ${SDL2GFX_INCLUDE_DIR} CACHE PATH "directory cache
entry initialized from old variable name")
endif()
find_path(SDL2_GFX_INCLUDE_DIR SDL2_gfxPrimitives.h
HINTS
ENV SDL2GFXDIR
ENV SDL2DIR
PATH_SUFFIXES include/SDL2 include
PATHS
${CMAKE_SOURCE_DIR}/deps
)

if(NOT SDL2_GFX_LIBRARY AND SDL2GFX_LIBRARY)
set(SDL2_GFX_LIBRARY ${SDL2GFX_LIBRARY} CACHE FILEPATH "file cache entry
initialized from old variable name")
endif()
find_library(SDL2_GFX_LIBRARY
NAMES SDL2_gfx
HINTS
ENV SDL2GFXDIR
ENV SDL2DIR
PATH_SUFFIXES lib
PATHS
${CMAKE_SOURCE_DIR}/deps
)

if(SDL2_GFX_INCLUDE_DIR AND EXISTS "${SDL2_GFX_INCLUDE_DIR}/SDL2_gfxPrimitives.h")
file(STRINGS "${SDL2_GFX_INCLUDE_DIR}/SDL2_gfxPrimitives.h" SDL2_GFX_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL2_GFXPRIMITIVES_MAJOR[ \t]+[0-9]+$")
file(STRINGS "${SDL2_GFX_INCLUDE_DIR}/SDL2_gfxPrimitives.h" SDL2_GFX_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL2_GFXPRIMITIVES_MINOR[ \t]+[0-9]+$")
file(STRINGS "${SDL2_GFX_INCLUDE_DIR}/SDL2_gfxPrimitives.h" SDL2_GFX_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL2_GFXPRIMITIVES_MICRO[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL2_GFXPRIMITIVES_MAJOR[ \t]+([0-9]+)$" "\\1" SDL2_GFX_VERSION_MAJOR "${SDL2_GFX_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_GFXPRIMITIVES_MINOR[ \t]+([0-9]+)$" "\\1" SDL2_GFX_VERSION_MINOR "${SDL2_GFX_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_GFXPRIMITIVES_MICRO[ \t]+([0-9]+)$" "\\1" SDL2_GFX_VERSION_PATCH "${SDL2_GFX_VERSION_PATCH_LINE}")
set(SDL2_GFX_VERSION_STRING ${SDL2_GFX_VERSION_MAJOR}.${SDL2_GFX_VERSION_MINOR}.${SDL2_GFX_VERSION_PATCH})
unset(SDL2_GFX_VERSION_MAJOR_LINE)
unset(SDL2_GFX_VERSION_MINOR_LINE)
unset(SDL2_GFX_VERSION_PATCH_LINE)
unset(SDL2_GFX_VERSION_MAJOR)
unset(SDL2_GFX_VERSION_MINOR)
unset(SDL2_GFX_VERSION_PATCH)
endif()

set(SDL2_GFX_LIBRARIES ${SDL2_GFX_LIBRARY})
set(SDL2_GFX_INCLUDE_DIRS ${SDL2_GFX_INCLUDE_DIR})

# for backward compatiblity
set(SDL2GFX_LIBRARY ${SDL2_GFX_LIBRARIES})
set(SDL2GFX_INCLUDE_DIR ${SDL2_GFX_INCLUDE_DIRS})
set(SDL2GFX_FOUND ${SDL2_GFX_FOUND})

FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_gfx
REQUIRED_VARS SDL2_GFX_LIBRARIES SDL2_GFX_INCLUDE_DIRS
VERSION_VAR SDL2_GFX_VERSION_STRING)



mark_as_advanced(SDL2_GFX_LIBRARY SDL2_GFX_INCLUDE_DIR)

93 changes: 93 additions & 0 deletions cmake/FindSDL2_ttf.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# - Locate SDL2_ttf library
# This module defines:
# SDL2_TTF_LIBRARIES, the name of the library to link against
# SDL2_TTF_INCLUDE_DIRS, where to find the headers
# SDL2_TTF_FOUND, if false, do not try to link against
# SDL2_TTF_VERSION_STRING - human-readable string containing the version of SDL2_ttf
#
# For backward compatiblity the following variables are also set:
# SDL2TTF_LIBRARY (same value as SDL2_TTF_LIBRARIES)
# SDL2TTF_INCLUDE_DIR (same value as SDL2_TTF_INCLUDE_DIRS)
# SDL2TTF_FOUND (same value as SDL2_TTF_FOUND)
#
# $SDL2DIR is an environment variable that would
# correspond to the ./configure --prefix=$SDL2DIR
# used in building SDL2.
#
# Created by Eric Wing. This was influenced by the FindSDL2.cmake
# module, but with modifications to recognize OS X frameworks and
# additional Unix paths (FreeBSD, etc).

#=============================================================================
# Copyright 2005-2009 Kitware, Inc.
# Copyright 2012 Benjamin Eikel
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)

if(NOT SDL2_TTF_INCLUDE_DIR AND SDL2TTF_INCLUDE_DIR)
set(SDL2_TTF_INCLUDE_DIR ${SDL2TTF_INCLUDE_DIR} CACHE PATH "directory cache
entry initialized from old variable name")
endif()
find_path(SDL2_TTF_INCLUDE_DIR SDL_ttf.h
HINTS
ENV SDL2TTFDIR
ENV SDL2DIR
PATH_SUFFIXES include/SDL2 include
PATHS
${CMAKE_SOURCE_DIR}/deps
)

if(NOT SDL2_TTF_LIBRARY AND SDL2TTF_LIBRARY)
set(SDL2_TTF_LIBRARY ${SDL2TTF_LIBRARY} CACHE FILEPATH "file cache entry
initialized from old variable name")
endif()
find_library(SDL2_TTF_LIBRARY
NAMES SDL2_ttf
HINTS
ENV SDL2TTFDIR
ENV SDL2DIR
PATH_SUFFIXES lib
PATHS
${CMAKE_SOURCE_DIR}/deps
)

if(SDL2_TTF_INCLUDE_DIR AND EXISTS "${SDL2_TTF_INCLUDE_DIR}/SDL2_ttf.h")
file(STRINGS "${SDL2_TTF_INCLUDE_DIR}/SDL2_ttf.h" SDL2_TTF_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL2_TTF_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_TTF_INCLUDE_DIR}/SDL2_ttf.h" SDL2_TTF_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL2_TTF_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_TTF_INCLUDE_DIR}/SDL2_ttf.h" SDL2_TTF_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL2_TTF_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL2_TTF_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_TTF_VERSION_MAJOR "${SDL2_TTF_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_TTF_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_TTF_VERSION_MINOR "${SDL2_TTF_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_TTF_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_TTF_VERSION_PATCH "${SDL2_TTF_VERSION_PATCH_LINE}")
set(SDL2_TTF_VERSION_STRING ${SDL2_TTF_VERSION_MAJOR}.${SDL2_TTF_VERSION_MINOR}.${SDL2_TTF_VERSION_PATCH})
unset(SDL2_TTF_VERSION_MAJOR_LINE)
unset(SDL2_TTF_VERSION_MINOR_LINE)
unset(SDL2_TTF_VERSION_PATCH_LINE)
unset(SDL2_TTF_VERSION_MAJOR)
unset(SDL2_TTF_VERSION_MINOR)
unset(SDL2_TTF_VERSION_PATCH)
endif()

set(SDL2_TTF_LIBRARIES ${SDL2_TTF_LIBRARY})
set(SDL2_TTF_INCLUDE_DIRS ${SDL2_TTF_INCLUDE_DIR})

# for backward compatiblity
set(SDL2TTF_LIBRARY ${SDL2_TTF_LIBRARIES})
set(SDL2TTF_INCLUDE_DIR ${SDL2_TTF_INCLUDE_DIRS})
set(SDL2TTF_FOUND ${SDL2_TTF_FOUND})

FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_ttf
REQUIRED_VARS SDL2_TTF_LIBRARIES SDL2_TTF_INCLUDE_DIRS
VERSION_VAR SDL2_TTF_VERSION_STRING)



mark_as_advanced(SDL2_TTF_LIBRARY SDL2_TTF_INCLUDE_DIR)

6 changes: 3 additions & 3 deletions include/blackjack.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
#include <time.h>
#include <unistd.h>

#include "SDL2/SDL.h"
#include "SDL2/SDL2_gfxPrimitives.h"
#include "SDL2/SDL_ttf.h"
#include "SDL.h"
#include "SDL2_gfxPrimitives.h"
#include "SDL_ttf.h"

#define CARDS_PER_DECK 52
#define MAX_CARDS_PER_HAND 11
Expand Down
4 changes: 2 additions & 2 deletions src/blackjack.c
Original file line number Diff line number Diff line change
Expand Up @@ -1085,13 +1085,13 @@ void draw_player_hands(const struct Game *game) {
} else if (player_hand->status == Won) {
sprintf(plus_minus, "+");
} else {
sprintf(plus_minus, "");
plus_minus[0] = '\0';
}

if (!player_hand->played && h == game->current_player_hand) {
sprintf(current, " *");
} else {
sprintf(current, "");
current[0] = '\0';
}

for (c = 0; c < player_hand->hand.num_cards; c++) {
Expand Down

0 comments on commit 348e0bd

Please sign in to comment.