tycho: build script magic
parent
0b075b0276
commit
5fb8c710a9
|
@ -1,91 +0,0 @@
|
||||||
cmake_minimum_required(VERSION 3.14)
|
|
||||||
project(maraiah-tycho CXX)
|
|
||||||
|
|
||||||
include(FeatureSummary)
|
|
||||||
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
|
||||||
set(CMAKE_AUTORCC ON)
|
|
||||||
set(CMAKE_AUTOUIC ON)
|
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS_DEBUGOPT "-O2 -g")
|
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG")
|
|
||||||
|
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
||||||
|
|
||||||
set(CARGO_FLAGS)
|
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL Release)
|
|
||||||
set(RUST_TARGET_DIR "release")
|
|
||||||
set(CARGO_FLAGS "${CARGO_FLAGS} --release")
|
|
||||||
else()
|
|
||||||
set(RUST_TARGET_DIR "debug")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CARGO_TARGET_DIR "${CMAKE_BINARY_DIR}/rust")
|
|
||||||
set(RUST_LIB "${CARGO_TARGET_DIR}/${RUST_TARGET_DIR}/libtycho.a")
|
|
||||||
|
|
||||||
find_package(Threads REQUIRED)
|
|
||||||
find_package(Qt5 5.6.0 CONFIG REQUIRED COMPONENTS Core Widgets)
|
|
||||||
|
|
||||||
feature_summary(
|
|
||||||
WHAT
|
|
||||||
ALL
|
|
||||||
INCLUDE_QUIET_PACKAGES
|
|
||||||
FATAL_ON_MISSING_REQUIRED_PACKAGES
|
|
||||||
)
|
|
||||||
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT "${RUST_LIB}"
|
|
||||||
COMMAND env CARGO_TARGET_DIR="${CARGO_TARGET_DIR}" cargo build -p maraiah-tycho ${CARGO_FLAGS}
|
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
||||||
COMMENT "Building Rust library"
|
|
||||||
)
|
|
||||||
|
|
||||||
add_custom_target(
|
|
||||||
test
|
|
||||||
COMMAND env CARGO_TARGET_DIR="${CARGO_TARGET_DIR}" cargo test
|
|
||||||
DEPENDS "${RUST_LIB}"
|
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
||||||
)
|
|
||||||
|
|
||||||
add_custom_target(maraiah-tycho-rust DEPENDS "${RUST_LIB}")
|
|
||||||
|
|
||||||
add_executable(
|
|
||||||
maraiah-tycho
|
|
||||||
WIN32
|
|
||||||
source/tycho/headers/mapprops.h
|
|
||||||
source/tycho/headers/menu.h
|
|
||||||
source/tycho/headers/tycho.h
|
|
||||||
source/tycho/resources/resources.qrc
|
|
||||||
source/tycho/source/main.cc
|
|
||||||
source/tycho/source/mapprops.cc
|
|
||||||
source/tycho/source/menu.cc
|
|
||||||
source/tycho/ui/about.ui
|
|
||||||
source/tycho/ui/mapprops.ui
|
|
||||||
source/tycho/ui/mapview.ui
|
|
||||||
source/tycho/ui/menu.ui
|
|
||||||
source/tycho/ui/points.ui
|
|
||||||
)
|
|
||||||
|
|
||||||
set_target_properties(
|
|
||||||
maraiah-tycho
|
|
||||||
PROPERTIES
|
|
||||||
CXX_STANDARD 17
|
|
||||||
CXX_STANDARD_REQUIRED ON
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(maraiah-tycho PUBLIC source/tycho/headers)
|
|
||||||
|
|
||||||
add_dependencies(maraiah-tycho maraiah-tycho-rust)
|
|
||||||
|
|
||||||
target_link_libraries(
|
|
||||||
maraiah-tycho
|
|
||||||
"${RUST_LIB}"
|
|
||||||
Threads::Threads
|
|
||||||
${CMAKE_DL_LIBS}
|
|
||||||
Qt5::Core
|
|
||||||
Qt5::Widgets
|
|
||||||
)
|
|
||||||
|
|
||||||
## EOF
|
|
|
@ -3,8 +3,7 @@ name = "maraiah-leela"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
authors = ["Alison Watson <marrub@greyserv.net>"]
|
authors = ["Alison Watson <marrub@greyserv.net>"]
|
||||||
description = "Maraiah testbed program."
|
description = "Maraiah testbed program."
|
||||||
|
edition = "2018"
|
||||||
edition = "2018"
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = "2"
|
clap = "2"
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
cmake_minimum_required(VERSION 3.14)
|
||||||
|
cmake_policy(SET CMP0046 NEW)
|
||||||
|
cmake_policy(SET CMP0063 NEW)
|
||||||
|
cmake_policy(SET CMP0071 NEW)
|
||||||
|
|
||||||
|
project(maraiah-tycho-hermes CXX)
|
||||||
|
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
|
||||||
|
find_package(
|
||||||
|
Qt5 5.6.0
|
||||||
|
CONFIG
|
||||||
|
REQUIRED
|
||||||
|
COMPONENTS Core Widgets
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(
|
||||||
|
maraiah-tycho-hermes
|
||||||
|
SHARED
|
||||||
|
$ENV{OUT_DIR}/bindings.cc
|
||||||
|
$ENV{OUT_DIR}/bindings.h
|
||||||
|
headers/mapprops.h
|
||||||
|
headers/menu.h
|
||||||
|
headers/tycho.h
|
||||||
|
resources/resources.qrc
|
||||||
|
source/main.cc
|
||||||
|
source/mapprops.cc
|
||||||
|
source/menu.cc
|
||||||
|
ui/about.ui
|
||||||
|
ui/mapprops.ui
|
||||||
|
ui/mapview.ui
|
||||||
|
ui/menu.ui
|
||||||
|
ui/points.ui
|
||||||
|
)
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
maraiah-tycho-hermes
|
||||||
|
PROPERTIES
|
||||||
|
CXX_STANDARD 17
|
||||||
|
CXX_STANDARD_REQUIRED ON
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(
|
||||||
|
maraiah-tycho-hermes
|
||||||
|
PUBLIC
|
||||||
|
headers
|
||||||
|
$ENV{OUT_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(
|
||||||
|
maraiah-tycho-hermes
|
||||||
|
Qt5::Core
|
||||||
|
Qt5::Widgets
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS maraiah-tycho-hermes)
|
||||||
|
|
||||||
|
## EOF
|
|
@ -4,12 +4,16 @@ version = "0.1.0"
|
||||||
authors = ["Alison Sanderson <marrub@greyserv.net>"]
|
authors = ["Alison Sanderson <marrub@greyserv.net>"]
|
||||||
description = "Tycho map editor."
|
description = "Tycho map editor."
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
build = "build.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
maraiah = {path = "../.."}
|
maraiah = {path = "../.."}
|
||||||
memmap = "0.7"
|
memmap = "0.7"
|
||||||
|
|
||||||
[lib]
|
[build-dependencies]
|
||||||
|
cmake = "0.1"
|
||||||
|
rust_qt_binding_generator = "0.3"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
name = "tycho"
|
name = "tycho"
|
||||||
path = "lib.rs"
|
path = "main.rs"
|
||||||
crate-type = ["staticlib"]
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"cppFile": "",
|
||||||
|
"rust": {
|
||||||
|
"dir": "",
|
||||||
|
"interfaceModule": "interface",
|
||||||
|
"implementationModule": "implementation"
|
||||||
|
},
|
||||||
|
"objects": {
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
use rust_qt_binding_generator::*;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
fn main()
|
||||||
|
{
|
||||||
|
let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
|
||||||
|
|
||||||
|
let mut config = configuration::parse("bindings.json").unwrap();
|
||||||
|
|
||||||
|
config.overwrite_implementation = true;
|
||||||
|
config.cpp_file = out_dir.join("bindings.cc");
|
||||||
|
config.rust.dir = out_dir;
|
||||||
|
|
||||||
|
generate_bindings(&config).unwrap();
|
||||||
|
|
||||||
|
let dst = cmake::Config::new(".").build();
|
||||||
|
|
||||||
|
println!("cargo:rustc-link-search=native={}/lib", dst.display());
|
||||||
|
println!("cargo:rustc-link-lib=dylib=maraiah-tycho-hermes");
|
||||||
|
}
|
||||||
|
|
||||||
|
// EOF
|
|
@ -1,16 +0,0 @@
|
||||||
use maraiah::durandal::ffi;
|
|
||||||
|
|
||||||
#[no_mangle]
|
|
||||||
pub extern "C" fn test_fn(fname: *const ffi::c_char)
|
|
||||||
{
|
|
||||||
let fname = unsafe {ffi::CStr::from_ptr(fname)};
|
|
||||||
println!("hello, world! from rust: {}", fname.to_str().unwrap());
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
struct Project
|
|
||||||
{
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// EOF
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
use maraiah::durandal::{err::*, ffi};
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
fn main_cc(app_name: *mut ffi::c_char);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
unsafe extern "C" fn Ma_test_fn(fname: *const ffi::c_char)
|
||||||
|
{
|
||||||
|
let fname = ffi::CStr::from_ptr(fname);
|
||||||
|
println!("hello, world! from rust: {}", fname.to_str().unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> ResultS<()>
|
||||||
|
{
|
||||||
|
println!("rust entry");
|
||||||
|
|
||||||
|
let mut args = std::env::args();
|
||||||
|
let app_name = args.next().ok_or(err_msg("bad launch name"))?;
|
||||||
|
let app_name = ffi::CString::new(app_name)?;
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
main_cc(app_name.into_raw());
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
// EOF
|
|
@ -1,5 +1,5 @@
|
||||||
<RCC>
|
<RCC>
|
||||||
<qresource>
|
<qresource prefix="/">
|
||||||
<file>color/lines.png</file>
|
<file>color/lines.png</file>
|
||||||
<file>color/map.png</file>
|
<file>color/map.png</file>
|
||||||
<file>color/points.png</file>
|
<file>color/points.png</file>
|
||||||
|
|
|
@ -1,13 +1,19 @@
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <cstdio>
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
extern "C" {
|
||||||
{
|
int main_cc(char *app_path)
|
||||||
QApplication a(argc, argv);
|
{
|
||||||
Menu w;
|
puts("cc entry");
|
||||||
w.show();
|
|
||||||
return a.exec();
|
int argc = 1;
|
||||||
|
char *argv[] = {app_path, nullptr};
|
||||||
|
|
||||||
|
QApplication a(argc, argv);
|
||||||
|
Menu w;
|
||||||
|
w.show();
|
||||||
|
return a.exec();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// EOF
|
// EOF
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
extern "C" void test_fn(char const *fname);
|
extern "C" void Ma_test_fn(char const *fname);
|
||||||
|
|
||||||
Menu::Menu(QWidget *parent) :
|
Menu::Menu(QWidget *parent) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
|
@ -35,7 +35,7 @@ void Menu::mapOpen()
|
||||||
QString(),
|
QString(),
|
||||||
tr("Marathon Map files (*.scen *.sceA Map)"));
|
tr("Marathon Map files (*.scen *.sceA Map)"));
|
||||||
|
|
||||||
test_fn(qUtf8Printable(fname));
|
Ma_test_fn(qUtf8Printable(fname));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Menu::openAbout()
|
void Menu::openAbout()
|
||||||
|
|
Loading…
Reference in New Issue