summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: b12ff81fd346bc6857fcb5026adcd9aa9f40302f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# Maintainer: taotieren <admin@taotieren.com>

pkgname=chordnova-git
pkgver=3.0.2021.r13.ga858152
pkgrel=2
pkgdesc="ChordNova is a powerful open-source chord progression analysis plus generation software for multiple operating systems."
arch=(
    aarch64
    riscv64
    x86_64)
url="https://github.com/Chen-and-Sim/ChordNova"
license=('Apache-2.0')
provides=(${pkgname%-git})
conflicts=(${pkgname%-git})
replaces=()
depends=(
    glibc
    qt5-base
)
makedepends=(git
    qt5-tools
    cmake
    ninja)
backup=()
options=()
install=
source=("${pkgname}::git+${url}.git")
sha256sums=('SKIP')

pkgver() {
    cd "${srcdir}/${pkgname}"
    git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}

prepare()
{
    git -C "${srcdir}/${pkgname}" clean -dfx
}

build() {
    cd "${srcdir}/${pkgname}/main"
    sed -i -e 's|/opt/$${TARGET}|/usr/share/chordnova|g' ChordNova.pro
    qmake-qt5 ChordNova.pro
    make
#     sed -i -e 's#class Chord: public ChordData#class Chord\n{\npublic:\n    void analyse();\n    void substitute();\n    void set_param_center();\n    void set_param_range();\n#' chord.h
    install -Dm0755 /dev/stdin "${srcdir}/${pkgname}/CMakeLists.txt" <<EOF
cmake_minimum_required(VERSION 3.12)
project(ChordNova)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)

# 设置编译选项
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 设置自定义路径变量
set(CHORDNOVA_INSTALL_PREFIX "/usr/share/chordnova/")

# 添加可执行文件
# add_executable(ChordNova
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/alignmentgui.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/analyser.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/analysergui.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/chord.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/chorddata.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/functions.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/inversiongui.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/main.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/maingui.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/moreparamgui.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/morerulesgui.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/omissiongui.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/overallscalegui.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/pedalnotesgui.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/savesettingsgui.cpp
#     \${CMAKE_CURRENT_SOURCE_DIR}/main/subsettingsgui.cpp
# )

# 添加头文件
# target_include_directories(ChordNova PRIVATE
#     \${CMAKE_CURRENT_SOURCE_DIR}/main
#     \${Qt5Core_INCLUDE_DIRS}
#     \${Qt5Gui_INCLUDE_DIRS}
#     \${Qt5Widgets_INCLUDE_DIRS}
# )

# if(WIN32)
#     target_link_libraries(ProjectName gdi32)
# endif()

# 添加其他依赖库和链接

# 安装可执行文件
# install(TARGETS ChordNova RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/bin)

# 添加子目录
add_subdirectory(utilities)

# 安装 attachments 目录下的 icons 和 presets
install(DIRECTORY \${CMAKE_CURRENT_SOURCE_DIR}/attachments/icons DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/bin)
install(DIRECTORY \${CMAKE_CURRENT_SOURCE_DIR}/attachments/presets DESTINATION \${CHORDNOVA_INSTALL_PREFIX})
EOF

    install -Dm0755 /dev/stdin "${srcdir}/${pkgname}/utilities/CMakeLists.txt" <<EOF
cmake_minimum_required(VERSION 3.12)
project(ChordNovaUtilities)

# 设置编译选项
set(CMAKE_CXX_STANDARD 11)

# 设置自定义路径变量
set(UTILITIES_INSTALL_PREFIX "/usr/share/chordnova/")

# 添加可执行文件
add_executable(CharmingChords \${CMAKE_CURRENT_SOURCE_DIR}/CharmingChords/CharmingChords.cpp)
add_executable(ChordCheck \${CMAKE_CURRENT_SOURCE_DIR}/ChordCheck/ChordCheck.cpp)
add_executable(ChordSect \${CMAKE_CURRENT_SOURCE_DIR}/ChordSect/ChordSect.cpp)
add_executable(ChordStats \${CMAKE_CURRENT_SOURCE_DIR}/ChordStats/ChordStats.cpp)
add_executable(ChordTrans \${CMAKE_CURRENT_SOURCE_DIR}/ChordTrans/ChordTrans.cpp)
add_executable(dbnormal \${CMAKE_CURRENT_SOURCE_DIR}/dbnormal/dbnormal.cpp)
add_executable(dbprime \${CMAKE_CURRENT_SOURCE_DIR}/dbprime/dbprime.cpp)
add_executable(outputconv \${CMAKE_CURRENT_SOURCE_DIR}/outputconv/outputconv.cpp)
add_executable(writealign \${CMAKE_CURRENT_SOURCE_DIR}/writealign/writealign.cpp)
add_executable(writedb \${CMAKE_CURRENT_SOURCE_DIR}/writedb/writedb.cpp)

# 添加其他依赖库和链接

# 安装可执行文件
install(TARGETS CharmingChords RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/utilities/CharmingChords)
install(TARGETS ChordCheck RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/utilities/ChordCheck)
install(TARGETS ChordSect RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/utilities/ChordSect)
install(TARGETS ChordStats RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/utilities/ChordStats)
install(TARGETS ChordTrans RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/utilities/ChordTrans)
install(TARGETS dbnormal RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/utilities/dbnormal)
install(TARGETS dbprime RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/utilities/dbprime)
install(TARGETS outputconv RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/utilities/outputconv)
install(TARGETS writealign RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/utilities/writealign)
install(TARGETS writedb RUNTIME DESTINATION \${CHORDNOVA_INSTALL_PREFIX}/utilities/writedb)

EOF

    cd "${srcdir}/${pkgname}"

    cmake -DCMAKE_BUILD_TYPE=None \
        -DENABLE_WARNINGS=OFF \
        -DFORCE_EXTERNAL_LIBS=ON \
        -B build \
        -G Ninja

    ninja -C build
}

package() {
    cd "${srcdir}/${pkgname}/main"
    make INSTALL_ROOT="${pkgdir}" install
    DESTDIR="${pkgdir}" ninja -C "${srcdir}"/${pkgname}/build install

    install -Dm0644 "${srcdir}/${pkgname}/attachments/icons/icon.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-git}.png"

#     install -dm0755 "${pkgdir}/usr/share/${pkgname%-git}/utilities"
#
#     cd "${srcdir}/${pkgname}/attachments"
#     cp -rva presets "${pkgdir}/usr/share/${pkgname%-git}"
#     cp -rva icons "${pkgdir}/usr/share/${pkgname%-git}/bin"
    install -Dm0755 /dev/stdin "${pkgdir}/usr/bin/${pkgname%-git}" << EOF
#!/bin/env bash

cd /usr/share/${pkgname%-git}/bin
./ChordNova \$@
EOF

    install -Dm0644 /dev/stdin "${pkgdir}/usr/share/applications/io.gitub.chen-and-sim.${pkgname%-git}.desktop" << EOF
[Desktop Entry]
Version=1.0
Type=Application

Name=ChordNova
Nmae[zh_CN]=智弦
Comment=ChordNova - Beyond boundaries!
Comment=智弦 - 和声生成神器!
Categories=Electronics;Music;

Icon=${pkgname%-git}.png
Exec=${pkgname%-git}
Terminal=false
EOF
}