Enhancement: Fixes #140, Shift as much of the packaging script steps into CMake as possible

This commit is contained in:
Rory Fewell
2023-05-09 02:14:49 +01:00
parent d22078daec
commit 37c8d8fb18
193 changed files with 1266 additions and 1972 deletions

2
.gitignore vendored
View File

@@ -17,6 +17,8 @@ mui-stuff/
# Build output
#
[Bb]uild/
config.h
meta.h
resources.c
*.deb
*.pot

View File

@@ -8,17 +8,26 @@ This is my little chipping-away spot for a Windows XP Total Conversion for XFCE.
## What?
Essentially this repo is a 'project' to replicate the XP experience on XFCE / Linux in general. This includes everything from desktop themes, icons, cursors, all the way to programs and the shell itself.
## Why?
I used to use Luna theme ports back when Windows 7 was still supported - it's no longer supported and customisability is non-existent on Windows 10. Whilst ports for XP themes do exist for Linux, I don't think they're particularly great. I want to replicate the Windows XP experience, as close to pixel perfect as possible.
**Please be aware of the following:**
- This project is **NOT** for installing on your parents/grandparents/whoever's computer to 'ease them into Linux' or something, I share this project for the interest of Windows/Linux enthusiasts
- There is no attempt to pretend the system is not Linux - consider this as 'Windows XP on the Linux kernel' (ie. you cannot expect there to be a `C:` drive under *My Computer*)
- Everything is massively under construction, and I am one person, so please don't whinge to me about how x/y/z doesn't look 100% like Windows XP, or that I haven't made program a/b/c
As part of my aim this includes writing programs and panel plugins to achieve this goal, such as the Start menu shown in the screenshot above.
## Why?
I used to use Luna theme ports on Windows 7, which has now lost support, and customisability is non-existent/blown away by WU on Windows 10 - switching to Linux seemed like the best choice.
There are themes that aim to replicate the Windows XP visual styles already, however as anyone who has tried this stuff knows, themes are either lacking or only go so far. This project differs in that I aim for as close to pixel-perfect as possible, and write programs to recreate the complete Windows XP environment (themes alone cannot reproduce the Start menu in the screenshots above).
## Building / Installation
Make sure to clone this repository recursively so that `/submodules` is populated! (use `git clone <url> --recurse-submodules`)
The build process involves packaging for each component, and then installing those packages. At the moment, I have only implemented `.deb` packaging, though I have [issue #35](https://github.com/rozniak/xfce-winxp-tc/issues/35) open to sort out other package managers eventually.
This project is componentised, so you can compile/install each thing individually (each cursor theme, desktop theme, program, library, etc.). The components are built using CMake (so for developing you can `make`, or if you're on an unsupported distro and desperate, `make install`).
The packaging is, of course, [found under `/packaging`](https://github.com/rozniak/xfce-winxp-tc/tree/master/packaging) (except for `/submodules`), with each directory explaining how to use the relevant script. In general, have a poke around in this repository, there are `README`s in each directory that will explain what things are, and how to install them. 😁
The typical install process involves packaging for each component, and then installing those packages. At the moment, I have only implemented `.deb` packaging, though I have [issue #35](https://github.com/rozniak/xfce-winxp-tc/issues/35) open to sort out other package managers eventually.
The packaging [lives under `/packaging`](https://github.com/rozniak/xfce-winxp-tc/tree/master/packaging) per format (except for `/submodules`). In general, have a poke around in this repository, there are `README`s in each directory that will explain what things are, and how to install them. 😁
*Please note, if you came from YouTube, the packaging process differs now in that it has been simplified to a single script rather than a script per type of component.*
## The theme(s) are buggy!
This is almost certainly true, especially seeing as [theming GTK isn't really a supported feature](https://stopthemingmy.app/). If you're using themes from this repository and programs look broken, you should file issues here rather than pestering the developers of said program.
@@ -30,7 +39,7 @@ The theme is now based directly from Adwaita to hopefully maximise compatibility
## Licence
The source code in this repository, essentially any *text* files, such as SASS, C, Bash script source code, are licensed under GPL 2.0.
This licence obviously does not cover the assets from Windows/Office (images, sounds, fonts etc.) - I am assuming you own genuine copies of Windows XP and Office 2007 in your retro software collection.
This licence obviously does not cover the assets from Windows/Office (images, sounds, fonts etc.) - those are still Microsoft's copyright (packaging will mark components using these as `non-free`). They're in this repo because I am lazy. 😛
## Roadmap?
I don't have a fancy looking roadmap document for this repo - there's too much to list really. Essentially, if something was in Windows XP, it's on my mind.

View File

@@ -10,15 +10,10 @@ Within each directory (eg. `with-shadow/standard`), these are the contents:
`res/` - contains the actual PNG images for each cursor, which are passed to `xcursorgen`
`debian-control` - the `control` file used in Debian packaging to provide metadata about the package
`index.theme` - the actual freedesktop theme config file (that gets deployed to `/usr/share/icons`)
`mappings` - since there are lots of X cursors that are basically the same, the mappings file maps X cursor names to the cursor names found under `cfg/` and `res/` (formatted as `(xcursor name)-->(cusor filename minus extension)`)
## Installation
See the `README.MD` under `/packaging/deb/cursors` for packaging and installation.
## Developing a cursor theme
Armed with the above info it should make sense to you how to create a cursor theme:
- Choose a name appropriate for the theme, create directories under `with-shadow` and `without-shadow` (create both `/with-shadow/<theme>` and `/without-shadow/<theme>`)

View File

@@ -0,0 +1,31 @@
cmake_minimum_required(VERSION 3.0)
project(
wintc-cursor-theme-standard-no-shadow
VERSION 1.0
DESCRIPTION "Windows Total Conversion Windows XP standard cursor theme (without shadows)."
)
set(PROJECT_ANYARCH true)
set(PROJECT_FREESTATUS false)
set(PROJECT_MAINTAINER "Rory Fewell <roryf@oddmatics.uk>")
set(PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR})
set(CURSOR_THEME_SHORTNAME standard-no-shadow)
include(../../../packaging/cmake-inc/common/CMakeLists.txt)
include(../../../packaging/cmake-inc/cursors/CMakeLists.txt)
include(../../../packaging/cmake-inc/mappings/CMakeLists.txt)
include(../../../packaging/cmake-inc/packaging/CMakeLists.txt)
wintc_add_gen_xcursors_target()
wintc_add_mappings_target(cursors)
# Installation
#
wintc_configure_and_install_packaging()
install(DIRECTORY ${CURSOR_COMPCURS_OUTPUT_DIR}/ DESTINATION ${CURSOR_PROJECT_INSTALL_PATH}/cursors/res)
install(DIRECTORY ${XDG_BLDMAPS_OUTPUT_DIR}/ DESTINATION ${CURSOR_PROJECT_INSTALL_PATH}/cursors)
install(FILES ${PROJECT_ROOT}/index.theme DESTINATION ${CURSOR_PROJECT_INSTALL_PATH})

View File

@@ -1 +1 @@
24 4 1 res/alt-select.png
24 4 1 alt-select.png

View File

@@ -1 +1 @@
24 0 0 res/arrow-copy.png
24 0 0 arrow-copy.png

View File

@@ -1 +1 @@
24 0 0 res/arrow-help.png
24 0 0 arrow-help.png

View File

@@ -1 +1 @@
24 0 0 res/arrow-link.png
24 0 0 arrow-link.png

View File

@@ -1 +1 @@
24 0 0 res/arrow-move.png
24 0 0 arrow-move.png

View File

@@ -1 +1 @@
24 12 0 res/arrow-r.png
24 12 0 arrow-r.png

View File

@@ -1 +1 @@
24 0 0 res/arrow-wait.png
24 0 0 arrow-wait.png

View File

@@ -1 +1 @@
24 0 0 res/arrow.png
24 0 0 arrow.png

View File

@@ -1 +1 @@
24 5 14 res/bottom-side.png
24 5 14 bottom-side.png

View File

@@ -1 +1 @@
24 5 14 res/bottom-tee.png
24 5 14 bottom-tee.png

View File

@@ -1 +1 @@
24 6 11 res/busy.png
24 6 11 busy.png

View File

@@ -1 +1 @@
24 7 7 res/cell.png
24 7 7 cell.png

View File

@@ -1 +1 @@
24 5 14 res/down.png
24 5 14 down.png

View File

@@ -1 +1 @@
24 6 0 res/hand.png
24 6 0 hand.png

View File

@@ -1 +1 @@
24 1 1 res/handwriting.png
24 1 1 handwriting.png

View File

@@ -1 +1 @@
24 2 5 res/left-side.png
24 2 5 left-side.png

View File

@@ -1 +1 @@
24 1 5 res/left-tee.png
24 1 5 left-tee.png

View File

@@ -1 +1 @@
24 1 5 res/left.png
24 1 5 left.png

View File

@@ -1 +1 @@
24 10 10 res/move.png
24 10 10 move.png

View File

@@ -1 +1 @@
24 14 1 res/ne.png
24 14 1 ne.png

View File

@@ -1 +1 @@
24 1 1 res/nw.png
24 1 1 nw.png

View File

@@ -1 +1 @@
24 9 9 res/precision.png
24 9 9 precision.png

View File

@@ -1 +1 @@
24 10 4 res/resize-h.png
24 10 4 resize-h.png

View File

@@ -1 +1 @@
24 7 7 res/resize-nw-se.png
24 7 7 resize-nw-se.png

View File

@@ -1 +1 @@
24 7 7 res/resize-sw-ne.png
24 7 7 resize-sw-ne.png

View File

@@ -1 +1 @@
24 4 10 res/resize-v.png
24 4 10 resize-v.png

View File

@@ -1 +1 @@
24 14 5 res/right-side.png
24 14 5 right-side.png

View File

@@ -1 +1 @@
24 15 5 res/right-tee.png
24 15 5 right-tee.png

View File

@@ -1 +1 @@
24 14 5 res/right.png
24 14 5 right.png

View File

@@ -1 +1 @@
24 14 14 res/se.png
24 14 14 se.png

View File

@@ -1 +1 @@
24 1 14 res/sw.png
24 1 14 sw.png

View File

@@ -1 +1 @@
24 9 4 res/text-select-vertical.png
24 9 4 text-select-vertical.png

View File

@@ -1 +1 @@
24 4 9 res/text-select.png
24 4 9 text-select.png

View File

@@ -1 +1 @@
24 5 2 res/top-side.png
24 5 2 top-side.png

View File

@@ -1 +1 @@
24 5 1 res/top-tee.png
24 5 1 top-tee.png

View File

@@ -1 +1 @@
24 10 10 res/unavailable.png
24 10 10 unavailable.png

View File

@@ -1 +1 @@
24 5 1 res/up.png
24 5 1 up.png

View File

@@ -1 +1 @@
24 7 7 res/zoom-in.png
24 7 7 zoom-in.png

View File

@@ -1 +1 @@
24 7 7 res/zoom-out.png
24 7 7 zoom-out.png

View File

@@ -1,6 +0,0 @@
Package: cursor-theme-standard-no-shadows
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: all
Section: non-free
Description: The standard Windows XP cursor theme.

View File

@@ -0,0 +1,31 @@
cmake_minimum_required(VERSION 3.0)
project(
wintc-cursor-theme-standard-with-shadow
VERSION 1.0
DESCRIPTION "Windows Total Conversion Windows XP standard cursor theme (with shadows)."
)
set(PROJECT_ANYARCH true)
set(PROJECT_FREESTATUS false)
set(PROJECT_MAINTAINER "Rory Fewell <roryf@oddmatics.uk>")
set(PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR})
set(CURSOR_THEME_SHORTNAME standard-with-shadow)
include(../../../packaging/cmake-inc/common/CMakeLists.txt)
include(../../../packaging/cmake-inc/cursors/CMakeLists.txt)
include(../../../packaging/cmake-inc/mappings/CMakeLists.txt)
include(../../../packaging/cmake-inc/packaging/CMakeLists.txt)
wintc_add_gen_xcursors_target()
wintc_add_mappings_target(cursors)
# Installation
#
wintc_configure_and_install_packaging()
install(DIRECTORY ${CURSOR_COMPCURS_OUTPUT_DIR}/ DESTINATION ${CURSOR_PROJECT_INSTALL_PATH}/cursors/res)
install(DIRECTORY ${XDG_BLDMAPS_OUTPUT_DIR}/ DESTINATION ${CURSOR_PROJECT_INSTALL_PATH}/cursors)
install(FILES ${PROJECT_ROOT}/index.theme DESTINATION ${CURSOR_PROJECT_INSTALL_PATH})

View File

@@ -1 +1 @@
24 4 1 res/alt-select.png
24 4 1 alt-select.png

View File

@@ -1 +1 @@
32 0 0 res/arrow-copy.png
32 0 0 arrow-copy.png

View File

@@ -1 +1 @@
32 0 0 res/arrow-help.png
32 0 0 arrow-help.png

View File

@@ -1 +1 @@
32 0 0 res/arrow-link.png
32 0 0 arrow-link.png

View File

@@ -1 +1 @@
32 0 0 res/arrow-move.png
32 0 0 arrow-move.png

View File

@@ -1 +1 @@
24 12 0 res/arrow-r.png
24 12 0 arrow-r.png

View File

@@ -1 +1 @@
24 0 0 res/arrow-wait.png
24 0 0 arrow-wait.png

View File

@@ -1 +1 @@
24 0 0 res/arrow.png
24 0 0 arrow.png

View File

@@ -1 +1 @@
24 5 14 res/bottom-side.png
24 5 14 bottom-side.png

View File

@@ -1 +1 @@
24 5 14 res/bottom-tee.png
24 5 14 bottom-tee.png

View File

@@ -1 +1 @@
24 6 11 res/busy.png
24 6 11 busy.png

View File

@@ -1 +1 @@
24 7 7 res/cell.png
24 7 7 cell.png

View File

@@ -1 +1 @@
24 5 14 res/down.png
24 5 14 down.png

View File

@@ -1 +1 @@
24 6 0 res/hand.png
24 6 0 hand.png

View File

@@ -1 +1 @@
32 1 1 res/handwriting.png
32 1 1 handwriting.png

View File

@@ -1 +1 @@
24 2 5 res/left-side.png
24 2 5 left-side.png

View File

@@ -1 +1 @@
24 1 5 res/left-tee.png
24 1 5 left-tee.png

View File

@@ -1 +1 @@
24 1 5 res/left.png
24 1 5 left.png

View File

@@ -1 +1 @@
32 10 10 res/move.png
32 10 10 move.png

View File

@@ -1 +1 @@
24 14 1 res/ne.png
24 14 1 ne.png

View File

@@ -1 +1 @@
24 1 1 res/nw.png
24 1 1 nw.png

View File

@@ -1 +1 @@
24 9 9 res/precision.png
24 9 9 precision.png

View File

@@ -1 +1 @@
32 10 4 res/resize-h.png
32 10 4 resize-h.png

View File

@@ -1 +1 @@
24 7 7 res/resize-nw-se.png
24 7 7 resize-nw-se.png

View File

@@ -1 +1 @@
24 7 7 res/resize-sw-ne.png
24 7 7 resize-sw-ne.png

View File

@@ -1 +1 @@
24 4 10 res/resize-v.png
24 4 10 resize-v.png

View File

@@ -1 +1 @@
24 14 5 res/right-side.png
24 14 5 right-side.png

View File

@@ -1 +1 @@
24 15 5 res/right-tee.png
24 15 5 right-tee.png

View File

@@ -1 +1 @@
24 14 5 res/right.png
24 14 5 right.png

View File

@@ -1 +1 @@
24 14 14 res/se.png
24 14 14 se.png

View File

@@ -1 +1 @@
24 1 14 res/sw.png
24 1 14 sw.png

View File

@@ -1 +1 @@
24 9 4 res/text-select-vertical.png
24 9 4 text-select-vertical.png

View File

@@ -1 +1 @@
24 4 9 res/text-select.png
24 4 9 text-select.png

View File

@@ -1 +1 @@
24 5 2 res/top-side.png
24 5 2 top-side.png

View File

@@ -1 +1 @@
24 5 1 res/top-tee.png
24 5 1 top-tee.png

View File

@@ -1 +1 @@
32 10 10 res/unavailable.png
32 10 10 unavailable.png

View File

@@ -1 +1 @@
24 5 1 res/up.png
24 5 1 up.png

View File

@@ -1 +1 @@
24 7 7 res/zoom-in.png
24 7 7 zoom-in.png

View File

@@ -1 +1 @@
24 7 7 res/zoom-out.png
24 7 7 zoom-out.png

View File

@@ -1,6 +0,0 @@
Package: cursor-theme-standard-with-shadows
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: all
Section: non-free
Description: The standard Windows XP cursor theme, with pointer shadows.

22
fonts/CMakeLists.txt Normal file
View File

@@ -0,0 +1,22 @@
cmake_minimum_required(VERSION 3.0)
project(
wintc-fonts-xp
VERSION 1.0
DESCRIPTION "Windows Total Conversion Windows XP fonts."
)
set(PROJECT_ANYARCH true)
set(PROJECT_FREESTATUS false)
set(PROJECT_MAINTAINER "Rory Fewell <roryf@oddmatics.uk>")
set(PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR})
include(../packaging/cmake-inc/common/CMakeLists.txt)
include(../packaging/cmake-inc/packaging/CMakeLists.txt)
# Installation
#
wintc_configure_and_install_packaging()
install(DIRECTORY ${PROJECT_ROOT}/ttf/ DESTINATION share/fonts/truetype/wintc)

View File

@@ -6,10 +6,5 @@ This is just essentially a bin for fonts, the structure is as follows:
`ttf/` - contains the TrueType font files
`debian-control` - the `control` file used in Debian packaging to provide metadata about the package
## Installation
See the `README.MD` under `/packaging/deb/fonts` for packaging and installation.
## Developing
Should not need any further development in terms of additional fonts - these are all the fonts included with the RTM system.

View File

@@ -1,6 +0,0 @@
Package: wintc-fonts-xp
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: all
Section: non-free
Description: Windows XP system fonts.

View File

@@ -6,18 +6,10 @@ Within each directory (eg. `luna`) these are the contents:
`res/` - contains the PNG images for each icon, divided into subfolders based on the icon size
`debian-control` - the `control` file used in Debian packaging to provide metadata about the package
`index.theme` - the actual freedesktop theme config file (that gets deployed to `/usr/share/icons`)
`mappings` - since there are lots of Freedesktop icon names that map to the same icon, the mappings file maps those Freedesktop icon names to the icons found under `/res` (formatted as `(freedesktop icon name)-->(icon filename minus extension)`)
## Installation
If you would like to install the icon theme you should:
- `cd` over to the `/packaging/deb/icons` directory
- `./packicon.sh <theme>` (eg. `./packicon.sh luna` to build the Luna icon package)
- `sudo dpkg -i <the package>.deb` (to install the package)
## Developing Icon Themes
All that you need to do to add icons (or change icons is):
- Place your icons in the appropriate directory under `/res`

36
icons/luna/CMakeLists.txt Normal file
View File

@@ -0,0 +1,36 @@
cmake_minimum_required(VERSION 3.0)
project(
wintc-icon-theme-luna
VERSION 1.0
DESCRIPTION "Windows Total Conversion Windows XP icon theme."
)
set(PROJECT_ANYARCH true)
set(PROJECT_FREESTATUS false)
set(PROJECT_MAINTAINER "Rory Fewell <roryf@oddmatics.uk>")
set(PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR})
set(ICON_THEME_SHORTNAME luna)
include(../../packaging/cmake-inc/common/CMakeLists.txt)
include(../../packaging/cmake-inc/icons/CMakeLists.txt)
include(../../packaging/cmake-inc/mappings/CMakeLists.txt)
include(../../packaging/cmake-inc/packaging/CMakeLists.txt)
wintc_add_mappings_target(icons)
# Configure postinstall script
#
set(PROJECT_POSTINSTALL_SCRIPT ${CMAKE_BINARY_DIR}/postinstall.sh)
configure_file(postinstall.sh ${PROJECT_POSTINSTALL_SCRIPT} @ONLY)
# Installation
#
wintc_configure_and_install_packaging()
install(DIRECTORY ${PROJECT_ROOT}/res DESTINATION ${ICON_PROJECT_INSTALL_PATH})
install(DIRECTORY ${XDG_BLDMAPS_OUTPUT_DIR}/ DESTINATION ${ICON_PROJECT_INSTALL_PATH})
install(FILES ${PROJECT_ROOT}/index.theme DESTINATION ${ICON_PROJECT_INSTALL_PATH})

View File

@@ -1,6 +0,0 @@
Package: icon-theme-luna
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: all
Section: non-free
Description: The Windows XP icon theme.

View File

@@ -0,0 +1,3 @@
#!/bin/bash
gtk-update-icon-cache @CMAKE_INSTALL_PREFIX@/share/icons/luna

View File

@@ -1,10 +1,14 @@
# Packaging
This directory contains scripts for creating packages for all the various components found in this repository.
This directory contains the source files for packaging components.
## Structure
Each 'type' of component has its own packaging script, in a subdirectory with appropriate notes (cursors, desktop theme, programs etc.). Explore the contents below here and you should find `README`s explaining how to use the scripts and install the components.
The contents of this directory is as follows:
`cmake-inc/` - common CMake scripts to be included by components in their builds
`deb/` - Debian (`.deb`) packaging
## Support?
At the moment you'll notice there is only a `deb` subdirectory. I personally use Debian, so I have got package scripts that generate `.deb` packages so far - if you're also a Debian user, or you use a derivative such as Ubuntu, then you should be good to go.
At the moment you'll notice there is only a `deb` subdirectory. I personally use Debian, so I have got Debian packaging functional - if you're also a Debian user, or you use a derivative such as Ubuntu, then you should be good to go.
For users on Linux distributions that use other package managers, I will get around to supporting those one day, it just takes a lot of work and a lot of testing. This `README` will be updated to reflect the status of package manager support when the work is done.

View File

@@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.0)
set(REPO_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../..)
set(WINTC_COMPILE_OPTIONS -Wall -Wextra -Wpedantic -Werror)
set(WINTC_ASSETS_INSTALL_DIR share/wintc)
function(wintc_source_vars SOURCE_PATH)
file(STRINGS ${SOURCE_PATH} sourceLines)

View File

@@ -0,0 +1,38 @@
cmake_minimum_required(VERSION 3.0)
# Check stuff we need is defined
#
if (NOT DEFINED CURSOR_THEME_SHORTNAME)
message(FATAL_ERROR "You must define CURSOR_THEME_SHORTNAME")
endif ()
# Define constants
#
set(CURSOR_PROJECT_INSTALL_PATH share/icons/${CURSOR_THEME_SHORTNAME})
set(CURSOR_COMPCURS_TOOL_DIR ${REPO_ROOT}/tools/bldutils/compcurs)
set(CURSOR_COMPCURS_OUTPUT_DIR ${CMAKE_BINARY_DIR}/compiled-cursors)
# Define function for generating xcursors
#
function(wintc_add_gen_xcursors_target)
find_package(PythonInterp 3.0 REQUIRED)
add_custom_command(
OUTPUT ${CURSOR_COMPCURS_OUTPUT_DIR}
WORKING_DIRECTORY ${CURSOR_COMPCURS_TOOL_DIR}
COMMAND ${PYTHON_EXECUTABLE}
ARGS
compcurs.py
${PROJECT_ROOT}/cfg
${PROJECT_ROOT}/res
${CURSOR_COMPCURS_OUTPUT_DIR}
VERBATIM
)
add_custom_target(
compile-cursors ALL
DEPENDS
${CURSOR_COMPCURS_OUTPUT_DIR}
)
endfunction()

View File

@@ -0,0 +1,11 @@
cmake_minimum_required(VERSION 3.0)
# Check stuff we need is defined
#
if (NOT DEFINED ICON_THEME_SHORTNAME)
message(FATAL_ERROR "You must define ICON_THEME_SHORTNAME")
endif ()
# Define constants for build paths
#
set(ICON_PROJECT_INSTALL_PATH share/icons/${ICON_THEME_SHORTNAME})

View File

@@ -0,0 +1,29 @@
cmake_minimum_required(VERSION 3.9)
# Define some constants
#
set(DEFAULT_LIB_PKGCONFIG ${CMAKE_CURRENT_LIST_DIR}/pkgconfig.pc.in)
# Prevent CMake from prepending 'lib' on libraries
#
set(CMAKE_SHARED_LIBRARY_PREFIX "")
set(CMAKE_SHARED_MODULE_PREFIX "")
set(CMAKE_STATIC_LIBRARY_PREFIX "")
# Extract library's name
#
if (${PROJECT_NAME} MATCHES "^lib(.+)")
set(LIB_NAME ${CMAKE_MATCH_1})
else()
message(
FATAL_ERROR
"Library project names must start with 'lib'."
)
endif()
# Function for adding pkgconfig to install
#
function(wintc_add_pkgconfig_install)
configure_file(${DEFAULT_LIB_PKGCONFIG} ${LIB_NAME}.pc @ONLY)
install(FILES ${CMAKE_BINARY_DIR}/${LIB_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endfunction()

View File

@@ -1,13 +1,12 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/@ARCH_DIR@
libdir=${prefix}/@LIB_DIR@
includedir=${exec_prefix}/include
pkgconfigdir=/@ARCH_DIR@/pkgconfig
Name: @PROJECT_NAME@
Description: @PROJECT_DESCRIPTION@
Version: @PROJECT_VERSION@
Requires:
Libs: -L${libdir} -lwintc-exec
Libs: -L${libdir} -l@LIB_NAME@
Cflags: -I${includedir}

View File

@@ -0,0 +1,104 @@
cmake_minimum_required(VERSION 3.12)
# Define supported languages - these are languages supported by Windows XP MUIs
#
set(
WINTC_SUPPORTED_LANGUAGES
ar_SA
bg_BG
cs_CZ
da_DK
de_DE
el_GR
es_ES
et_EE
fi_FI
fr_FR
he_IL
hr_HR
hu_HU
it_IT
ja_JP
ko_KR
lt_LT
lv_LV
nb_NO
nl_NL
pl_PL
pt_BR
pt_PT
ro_RO
ru_RU
sk_SK
sl_SI
sv_SE
th_TH
tr_TR
zh_CN
zh_TW
)
# Define build for config.h
#
set(WINTC_CONFIG_H_IN_PATH ${CMAKE_CURRENT_LIST_DIR}/config.h.in)
function(wintc_create_config_h)
configure_file(${WINTC_CONFIG_H_IN_PATH} ${PROJECT_ROOT}/src/config.h @ONLY)
endfunction()
# Define build for meta.h
#
set(WINTC_META_H_IN_PATH ${CMAKE_CURRENT_LIST_DIR}/meta.h.in)
function(wintc_create_meta_h)
configure_file(${WINTC_META_H_IN_PATH} ${PROJECT_ROOT}/src/meta.h @ONLY)
endfunction()
# Define build for languages
#
function(wintc_compile_and_install_pofiles)
# Call msgfmt
#
# Add a command to build each po->mo one by one, do NOT pass all the inputs
# to one msgfmt command like I did at first because it treats ALL inputs as
# making ONE output (as a result you get loads of 'duplicate message
# definition' errors and end up in a state of utter confusion)
#
find_program(MSGFMT msgfmt)
foreach (LOCALE_STR ${WINTC_SUPPORTED_LANGUAGES})
set(NEXT_POFILE ${PROJECT_ROOT}/po/${LOCALE_STR}.po)
set(NEXT_MOFILE ${CMAKE_BINARY_DIR}/locale/${LOCALE_STR}/${PROJECT_NAME}.mo)
list(
APPEND
OUTPUT_MOFILES
${NEXT_MOFILE}
)
add_custom_command(
OUTPUT ${NEXT_MOFILE}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMAND mkdir
ARGS
-p
${CMAKE_BINARY_DIR}/locale/${LOCALE_STR}
COMMAND ${MSGFMT}
ARGS
${NEXT_POFILE}
-o
${NEXT_MOFILE}
VERBATIM
DEPENDS
${NEXT_POFILE}
)
install(DIRECTORY ${CMAKE_BINARY_DIR}/locale/${LOCALE_STR}/ DESTINATION share/locale/${LOCALE_STR}/LC_MESSAGES)
endforeach()
add_custom_target(
build-mofiles ALL
DEPENDS
${OUTPUT_MOFILES}
)
endfunction()

View File

@@ -1,6 +1,6 @@
#ifndef __CONFIG_H__
#define __CONFIG_H__
#define GETTEXT_PACKAGE "wintc-shllang"
#define GETTEXT_PACKAGE "@PROJECT_NAME@"
#endif

Some files were not shown because too many files have changed in this diff Show More