Skip to content

Commit aafec91

Browse files
Merge pull request #59 from jszczerbinsky/dev
v2.0.0
2 parents f509d33 + ddcc280 commit aafec91

20 files changed

+512
-286
lines changed

.github/workflows/build.yml

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ jobs:
1414
steps:
1515
- name: Checkout
1616
uses: actions/checkout@v3
17+
- name: Install cmake
18+
uses: lukka/get-cmake@v3.26.0
1719
- name: Install dependencies
1820
run: sudo apt install libsdl2-dev
1921
- name: Build
20-
run: make && sudo make install
22+
run: mkdir -p build && cd build && cmake ../ && cmake --build . && cpack
2123

2224
windows:
2325
name: Build on Windows
@@ -26,17 +28,45 @@ jobs:
2628
steps:
2729
- name: Checkout
2830
uses: actions/checkout@v3
29-
- name: Install mingw and wget
30-
run: |
31-
choco install mingw
32-
choco install wget
33-
- name: Install dependencies
31+
- name: Install cmake
32+
uses: lukka/get-cmake@v3.26.0
33+
- name: Install MinGW
34+
uses: egor-tensin/setup-mingw@v2
35+
- name: Install MSVC
36+
uses: ilammy/msvc-dev-cmd@v1
37+
- name: Install wget
38+
run: choco install wget
39+
- name: Install dependencies`
3440
run: |
3541
wget -nv https://github.com/libsdl-org/SDL/releases/download/release-2.26.3/SDL2-devel-2.26.3-mingw.zip
36-
7z x -bd SDL2-devel-2.26.3-mingw.zip
37-
xcopy SDL2-2.26.3\x86_64-w64-mingw32\lib\ C:\ProgramData\Chocolatey\lib\mingw\tools\install\mingw64\lib\
38-
md C:\ProgramData\Chocolatey\lib\mingw\tools\install\mingw64\include\SDL2\
39-
xcopy SDL2-2.26.3\x86_64-w64-mingw32\include\SDL2\ C:\ProgramData\Chocolatey\lib\mingw\tools\install\mingw64\include\SDL2\
42+
7z x -bd SDL2-devel-2.26.3-mingw.zip -omingw
43+
wget -nv https://github.com/libsdl-org/SDL/releases/download/release-2.26.3/SDL2-devel-2.26.3-VC.zip
44+
7z x -bd SDL2-devel-2.26.3-VC.zip -omsvc
45+
- name: Build with MSVC
46+
run: |
47+
mkdir buildMSVC
48+
cd buildMSVC
49+
cmake -G "Visual Studio 17" -DSDL2_DIR=${{ github.workspace }}\msvc\SDL2-2.26.3\cmake -DSDL2_RUNTIME_DIR=${{ github.workspace }}\msvc\SDL2-2.26.3\lib\x64 ..\
50+
cmake --build .
51+
cd ..
52+
- name: Build with MinGW
53+
run: |
54+
mkdir buildMinGW
55+
cd buildMinGW
56+
cmake -G "MinGW Makefiles" -DSDL2_DIR=${{ github.workspace }}\mingw\SDL2-2.26.3\cmake -DSDL2_RUNTIME_DIR=${{ github.workspace }}\mingw\SDL2-2.26.3\x86_64-mingw32\bin -DCMAKE_BUILD_TYPE=Release ..\
57+
cmake --build .
58+
59+
60+
macOS:
61+
name: Build on MacOS
62+
runs-on: macos-12
63+
64+
steps:
65+
- name: Checkout
66+
uses: actions/checkout@v3
67+
- name: Install cmake
68+
uses: lukka/get-cmake@v3.26.0
69+
- name: Install dependencies`
70+
run: brew install sdl2
4071
- name: Build
41-
shell: cmd
42-
run: .\build.bat
72+
run: mkdir build && cd build && cmake ../ && cmake --build . && sudo cpack

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
resource.rc
2+
.DS_Store
3+
14
data/
25
build/
36
*.res

CMakeLists.txt

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
cmake_minimum_required(VERSION 3.13)
2+
3+
project(lwp
4+
LANGUAGES C)
5+
6+
if(SDL2_RUNTIME_DIR)
7+
string(REPLACE "\\" "/" SDL2_RUNTIME_DIR ${SDL2_RUNTIME_DIR})
8+
endif()
9+
10+
# Detect the platform
11+
if (APPLE)
12+
set(_UNAME "DARWIN")
13+
elseif (WIN32)
14+
set(_UNAME "WIN32")
15+
else()
16+
set(_UNAME "LINUX")
17+
endif()
18+
19+
# Detect version
20+
find_package(Git)
21+
if(Git_FOUND)
22+
execute_process(
23+
COMMAND ${GIT_EXECUTABLE} describe --tags --dirty --match "v*"
24+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
25+
OUTPUT_VARIABLE GIT_DESCRIBE_VERSION
26+
RESULT_VARIABLE GIT_DESCRIBE_ERROR_CODE
27+
OUTPUT_STRIP_TRAILING_WHITESPACE
28+
)
29+
if(NOT GIT_DESCRIBE_ERROR_CODE)
30+
set(PROGRAM_VERSION ${GIT_DESCRIBE_VERSION})
31+
endif()
32+
endif()
33+
if(NOT DEFINED PROGRAM_VERSION)
34+
set(PROGRAM_VERSION v0.0.0-unknown)
35+
message(WARNING "Can't determine Layered WallPaper version")
36+
endif()
37+
38+
set(_SOURCE_FILES
39+
main.c
40+
debug.c
41+
parser.c
42+
wallpaper.c
43+
window.c
44+
)
45+
46+
# Windows resource file
47+
if(_UNAME STREQUAL "WIN32")
48+
if(MINGW)
49+
set(CMAKE_RC_COMPILER_INIT windres)
50+
ENABLE_LANGUAGE(RC)
51+
SET(CMAKE_RC_COMPILE_OBJECT
52+
"<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
53+
endif(MINGW)
54+
55+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resource.template.rc ${CMAKE_CURRENT_SOURCE_DIR}/resource.rc
56+
@ONLY)
57+
list(APPEND _SOURCE_FILES "resource.rc")
58+
endif()
59+
60+
# SDL2 dependency
61+
find_package(SDL2 REQUIRED CONFIG)
62+
set(_INCLUDE_DIRS ${SDL2_INCLUDE_DIRS})
63+
set(_LIBS ${SDL2_LIBRARIES})
64+
65+
if (_UNAME STREQUAL "DARWIN")
66+
# MacOSX framework dependencies
67+
list(APPEND _LIBS "-framework CoreGraphics" "-framework Foundation")
68+
endif()
69+
70+
if (_UNAME STREQUAL "LINUX")
71+
# X11 dependency
72+
find_package(X11 REQUIRED)
73+
list(APPEND _INCLUDE_DIRS ${X11_INCLUDE_DIR})
74+
list(APPEND _LIBS ${X11_LIBRARIES})
75+
endif()
76+
77+
option(LWP_INSTALL_LAUNCHD "Launch lwp on login (MacOSX only)" OFF)
78+
79+
# Config file
80+
set(_DEFAULT_CONFIG_FILE default.cfg)
81+
if(_UNAME STREQUAL "WIN32")
82+
set(_DEFAULT_CONFIG_FILE defaultWin.cfg)
83+
endif()
84+
if (_UNAME STREQUAL "DARWIN")
85+
set(_DEFAULT_CONFIG_FILE defaultMac.cfg)
86+
endif()
87+
88+
# Main executable
89+
if (_UNAME STREQUAL "DARWIN")
90+
add_executable(lwp MACOSX_BUNDLE ${_SOURCE_FILES})
91+
else()
92+
add_executable(lwp ${_SOURCE_FILES})
93+
endif()
94+
95+
# Windows specific properties for executable
96+
if(_UNAME STREQUAL "WIN32")
97+
set_property(TARGET lwp PROPERTY VS_DPI_AWARE "PerMonitor")
98+
endif()
99+
100+
if(MSVC)
101+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
102+
endif()
103+
104+
target_compile_definitions(lwp PUBLIC __${_UNAME})
105+
target_include_directories(lwp PUBLIC ${_INCLUDE_DIRS})
106+
target_link_libraries(lwp PRIVATE ${_LIBS})
107+
108+
# Installation rules
109+
if(_UNAME STREQUAL "WIN32")
110+
install(TARGETS lwp
111+
DESTINATION .)
112+
install(DIRECTORY wallpapers
113+
DESTINATION .)
114+
install(FILES LICENSE.txt
115+
DESTINATION .)
116+
install(FILES ${_DEFAULT_CONFIG_FILE}
117+
DESTINATION .)
118+
install(FILES ${SDL2_RUNTIME_DIR}/SDL2.dll
119+
DESTINATION .)
120+
install(FILES ${SDL2_RUNTIME_DIR}/README-SDL.txt
121+
DESTINATION .)
122+
elseif(_UNAME STREQUAL "LINUX")
123+
install(TARGETS lwp
124+
DESTINATION usr/local/bin)
125+
install(DIRECTORY wallpapers
126+
DESTINATION usr/local/share/lwp)
127+
install(FILES LICENSE.txt
128+
DESTINATION usr/local/share/lwp)
129+
install(FILES ${_DEFAULT_CONFIG_FILE}
130+
TYPE SYSCONF
131+
RENAME lwp.cfg)
132+
else()
133+
install(TARGETS lwp
134+
DESTINATION Layered_WallPaper)
135+
install(DIRECTORY wallpapers
136+
DESTINATION Layered_WallPaper)
137+
install(FILES LICENSE.txt
138+
DESTINATION Layered_WallPaper)
139+
install(FILES ${_DEFAULT_CONFIG_FILE}
140+
DESTINATION Layered_WallPaper
141+
RENAME lwp.cfg)
142+
install(FILES lwp.template.plist
143+
DESTINATION Layered_WallPaper)
144+
install (FILES setupPlist.command
145+
DESTINATION Layered_WallPaper
146+
RENAME Toggle_Autorun.command
147+
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
148+
install (FILES setupPlist.command
149+
DESTINATION .
150+
RENAME Toggle_Autorun.command
151+
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
152+
153+
endif()
154+
155+
# Installer
156+
if (_UNAME STREQUAL "WIN32")
157+
set(CPACK_GENERATOR NSIS)
158+
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Layered WallPaper")
159+
elseif(_UNAME STREQUAL "LINUX")
160+
set(CPACK_GENERATOR TGZ)
161+
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
162+
elseif(_UNAME STREQUAL "DARWIN")
163+
set(CPACK_GENERATOR DragNDrop)
164+
set(CPACK_DMG_BACKGROUND_IMAGE ${CMAKE_CURRENT_SOURCE_DIR}/dmgBg.png)
165+
set(CPACK_DMG_DS_STORE_SETUP_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/setupDmg.applescript)
166+
endif()
167+
set(CPACK_NSIS_MUI_ICON ${CMAKE_CURRENT_SOURCE_DIR}/icon.ico)
168+
set(CPACK_NSIS_MUI_UNIICON ${CMAKE_CURRENT_SOURCE_DIR}/icon.ico)
169+
set(CPACK_NSIS_INSTALLED_ICON_NAME ${CMAKE_CURRENT_SOURCE_DIR}/icon.ico)
170+
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
171+
WriteRegExpandStr HKLM 'Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run' 'lwp' '\$INSTDIR\\\\lwp.exe'
172+
Exec '\$INSTDIR\\\\lwp.exe'
173+
")
174+
set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
175+
DeleteRegValue HKLM 'Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run' 'lwp'
176+
")
177+
set(CPACK_PACKAGE_NAME "Layered WallPaper")
178+
set(CPACK_PACKAGE_VENDOR "Jakub Szczerbinski")
179+
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt)
180+
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Multi-platform parallax wallpapers")
181+
set(CPACK_PACKAGE_VERSION ${PROGRAM_VERSION})
182+
183+
INCLUDE(CPack)

LICENSE renamed to LICENSE.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
MIT License
1+
MIT License
22

33
Copyright (c) 2022 Jakub Szczerbiński
44

Makefile

Lines changed: 0 additions & 87 deletions
This file was deleted.

0 commit comments

Comments
 (0)