Support custom PROGRAM_PREFIX Signed-off-by: Miodrag Milanovic <mmicko@gmail.com>
diff --git a/libtrellis/CMakeLists.txt b/libtrellis/CMakeLists.txt index 10fd498..c519daf 100644 --- a/libtrellis/CMakeLists.txt +++ b/libtrellis/CMakeLists.txt
@@ -5,6 +5,8 @@ option(BUILD_SHARED "Build shared Trellis library" ON) option(STATIC_BUILD "Create static build of Trellis tools" OFF) +set(PROGRAM_PREFIX "" CACHE STRING "Name prefix for executables") + set(CMAKE_CXX_STANDARD 14) if (MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -bigobj -EHsc") @@ -116,12 +118,12 @@ if(APPLE) set_target_properties(${name} PROPERTIES BUILD_WITH_INSTALL_RPATH ON - INSTALL_RPATH "@loader_path/${TRELLIS_RPATH_LIBDIR}/trellis" + INSTALL_RPATH "@loader_path/${TRELLIS_RPATH_LIBDIR}/${PROGRAM_PREFIX}trellis" INSTALL_NAME_DIR "@rpath") elseif(UNIX) set_target_properties(${name} PROPERTIES BUILD_WITH_INSTALL_RPATH ON - INSTALL_RPATH "\$ORIGIN/${TRELLIS_RPATH_LIBDIR}/trellis") + INSTALL_RPATH "\$ORIGIN/${TRELLIS_RPATH_LIBDIR}/${PROGRAM_PREFIX}trellis") endif() endfunction() @@ -144,45 +146,45 @@ endif() file(WRITE "${CMAKE_BINARY_DIR}/generated/last_git_version" CURRENT_GIT_VERSION) -add_executable(ecpbram ${INCLUDE_FILES} tools/ecpbram.cpp "${CMAKE_BINARY_DIR}/generated/version.cpp") -target_include_directories(ecpbram PRIVATE tools) -target_compile_definitions(ecpbram PRIVATE TRELLIS_RPATH_DATADIR="${TRELLIS_RPATH_DATADIR}" TRELLIS_PREFIX="${CMAKE_INSTALL_PREFIX}") -target_link_libraries(ecpbram trellis ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${link_param}) -setup_rpath(ecpbram) +add_executable(${PROGRAM_PREFIX}ecpbram ${INCLUDE_FILES} tools/ecpbram.cpp "${CMAKE_BINARY_DIR}/generated/version.cpp") +target_include_directories(${PROGRAM_PREFIX}ecpbram PRIVATE tools) +target_compile_definitions(${PROGRAM_PREFIX}ecpbram PRIVATE TRELLIS_RPATH_DATADIR="${TRELLIS_RPATH_DATADIR}" TRELLIS_PREFIX="${CMAKE_INSTALL_PREFIX}" TRELLIS_PROGRAM_PREFIX="${PROGRAM_PREFIX}") +target_link_libraries(${PROGRAM_PREFIX}ecpbram trellis ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${link_param}) +setup_rpath(${PROGRAM_PREFIX}ecpbram) -add_executable(ecppack ${INCLUDE_FILES} tools/ecppack.cpp "${CMAKE_BINARY_DIR}/generated/version.cpp") -target_include_directories(ecppack PRIVATE tools) -target_compile_definitions(ecppack PRIVATE TRELLIS_RPATH_DATADIR="${TRELLIS_RPATH_DATADIR}" TRELLIS_PREFIX="${CMAKE_INSTALL_PREFIX}") -target_link_libraries(ecppack trellis ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${link_param}) -setup_rpath(ecppack) +add_executable(${PROGRAM_PREFIX}ecppack ${INCLUDE_FILES} tools/ecppack.cpp "${CMAKE_BINARY_DIR}/generated/version.cpp") +target_include_directories(${PROGRAM_PREFIX}ecppack PRIVATE tools) +target_compile_definitions(${PROGRAM_PREFIX}ecppack PRIVATE TRELLIS_RPATH_DATADIR="${TRELLIS_RPATH_DATADIR}" TRELLIS_PREFIX="${CMAKE_INSTALL_PREFIX}" TRELLIS_PROGRAM_PREFIX="${PROGRAM_PREFIX}") +target_link_libraries(${PROGRAM_PREFIX}ecppack trellis ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${link_param}) +setup_rpath(${PROGRAM_PREFIX}ecppack) -add_executable(ecpunpack ${INCLUDE_FILES} tools/ecpunpack.cpp "${CMAKE_BINARY_DIR}/generated/version.cpp") -target_include_directories(ecpunpack PRIVATE tools) -target_compile_definitions(ecpunpack PRIVATE TRELLIS_RPATH_DATADIR="${TRELLIS_RPATH_DATADIR}" TRELLIS_PREFIX="${CMAKE_INSTALL_PREFIX}") -target_link_libraries(ecpunpack trellis ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${link_param}) -setup_rpath(ecpunpack) +add_executable(${PROGRAM_PREFIX}ecpunpack ${INCLUDE_FILES} tools/ecpunpack.cpp "${CMAKE_BINARY_DIR}/generated/version.cpp") +target_include_directories(${PROGRAM_PREFIX}ecpunpack PRIVATE tools) +target_compile_definitions(${PROGRAM_PREFIX}ecpunpack PRIVATE TRELLIS_RPATH_DATADIR="${TRELLIS_RPATH_DATADIR}" TRELLIS_PREFIX="${CMAKE_INSTALL_PREFIX}" TRELLIS_PROGRAM_PREFIX="${PROGRAM_PREFIX}") +target_link_libraries(${PROGRAM_PREFIX}ecpunpack trellis ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${link_param}) +setup_rpath(${PROGRAM_PREFIX}ecpunpack) -add_executable(ecppll ${INCLUDE_FILES} tools/ecppll.cpp "${CMAKE_BINARY_DIR}/generated/version.cpp") -target_include_directories(ecppll PRIVATE tools) -target_compile_definitions(ecppll PRIVATE TRELLIS_RPATH_DATADIR="${TRELLIS_RPATH_DATADIR}" TRELLIS_PREFIX="${CMAKE_INSTALL_PREFIX}") -target_link_libraries(ecppll trellis ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${link_param}) -setup_rpath(ecppll) +add_executable(${PROGRAM_PREFIX}ecppll ${INCLUDE_FILES} tools/ecppll.cpp "${CMAKE_BINARY_DIR}/generated/version.cpp") +target_include_directories(${PROGRAM_PREFIX}ecppll PRIVATE tools) +target_compile_definitions(${PROGRAM_PREFIX}ecppll PRIVATE TRELLIS_RPATH_DATADIR="${TRELLIS_RPATH_DATADIR}" TRELLIS_PREFIX="${CMAKE_INSTALL_PREFIX}" TRELLIS_PROGRAM_PREFIX="${PROGRAM_PREFIX}") +target_link_libraries(${PROGRAM_PREFIX}ecppll trellis ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${link_param}) +setup_rpath(${PROGRAM_PREFIX}ecppll) -add_executable(ecpmulti ${INCLUDE_FILES} tools/ecpmulti.cpp "${CMAKE_BINARY_DIR}/generated/version.cpp") -target_include_directories(ecpmulti PRIVATE tools) -target_compile_definitions(ecpmulti PRIVATE TRELLIS_RPATH_DATADIR="${TRELLIS_RPATH_DATADIR}" TRELLIS_PREFIX="${CMAKE_INSTALL_PREFIX}") -target_link_libraries(ecpmulti trellis ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${link_param}) -setup_rpath(ecpmulti) +add_executable(${PROGRAM_PREFIX}ecpmulti ${INCLUDE_FILES} tools/ecpmulti.cpp "${CMAKE_BINARY_DIR}/generated/version.cpp") +target_include_directories(${PROGRAM_PREFIX}ecpmulti PRIVATE tools) +target_compile_definitions(${PROGRAM_PREFIX}ecpmulti PRIVATE TRELLIS_RPATH_DATADIR="${TRELLIS_RPATH_DATADIR}" TRELLIS_PREFIX="${CMAKE_INSTALL_PREFIX}" TRELLIS_PROGRAM_PREFIX="${PROGRAM_PREFIX}") +target_link_libraries(${PROGRAM_PREFIX}ecpmulti trellis ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${link_param}) +setup_rpath(${PROGRAM_PREFIX}ecpmulti) if (BUILD_SHARED) - install(TARGETS trellis ecpbram ecppack ecppll ecpunpack ecpmulti ${PythonInstallTarget} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/trellis + install(TARGETS trellis ${PROGRAM_PREFIX}ecpbram ${PROGRAM_PREFIX}ecppack ${PROGRAM_PREFIX}ecppll ${PROGRAM_PREFIX}ecpunpack ${PROGRAM_PREFIX}ecpmulti ${PythonInstallTarget} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PROGRAM_PREFIX}trellis RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) else() - install(TARGETS ecpbram ecppack ecpunpack ecppll ecpmulti + install(TARGETS ${PROGRAM_PREFIX}ecpbram ${PROGRAM_PREFIX}ecppack ${PROGRAM_PREFIX}ecpunpack ${PROGRAM_PREFIX}ecppll ${PROGRAM_PREFIX}ecpmulti RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() -install(DIRECTORY ../database DESTINATION ${CMAKE_INSTALL_DATADIR}/trellis PATTERN ".git" EXCLUDE) -install(DIRECTORY ../misc DESTINATION ${CMAKE_INSTALL_DATADIR}/trellis) -install(DIRECTORY ../util/common DESTINATION ${CMAKE_INSTALL_DATADIR}/trellis/util) -install(DIRECTORY ../timing/util DESTINATION ${CMAKE_INSTALL_DATADIR}/trellis/timing USE_SOURCE_PERMISSIONS) +install(DIRECTORY ../database DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROGRAM_PREFIX}trellis PATTERN ".git" EXCLUDE) +install(DIRECTORY ../misc DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROGRAM_PREFIX}trellis) +install(DIRECTORY ../util/common DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROGRAM_PREFIX}trellis/util) +install(DIRECTORY ../timing/util DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROGRAM_PREFIX}trellis/timing USE_SOURCE_PERMISSIONS)
diff --git a/libtrellis/include/DatabasePath.hpp b/libtrellis/include/DatabasePath.hpp index 4063802..cab8a29 100644 --- a/libtrellis/include/DatabasePath.hpp +++ b/libtrellis/include/DatabasePath.hpp
@@ -11,7 +11,7 @@ std::string get_database_path() { boost::filesystem::path executable_path = boost::dll::program_location().parent_path(); - boost::filesystem::path database_datadir_relative(TRELLIS_RPATH_DATADIR "/trellis/database"); + boost::filesystem::path database_datadir_relative(TRELLIS_RPATH_DATADIR "/" TRELLIS_PROGRAM_PREFIX "trellis/database"); std::string database_folder = (executable_path /= database_datadir_relative).string(); return database_folder; }
diff --git a/libtrellis/tools/ecpbram.cpp b/libtrellis/tools/ecpbram.cpp index 4c872fb..275a10d 100644 --- a/libtrellis/tools/ecpbram.cpp +++ b/libtrellis/tools/ecpbram.cpp
@@ -146,7 +146,7 @@ if (vm.count("help")) { help: cerr << "Project Trellis - Open Source Tools for ECP5 FPGAs" << endl; - cerr << "ecpbram: ECP5 BRAM content initialization tool" << endl; + cerr << argv[0] << ": ECP5 BRAM content initialization tool" << endl; cerr << endl; cerr << "Copyright (C) 2019 Sylvain Munaut <tnt@246tNt.com>" << endl; cerr << "Copyright (C) 2016 Clifford Wolf <clifford@clifford.at>" << endl;
diff --git a/libtrellis/tools/ecpmulti.cpp b/libtrellis/tools/ecpmulti.cpp index 16d6675..83232e1 100644 --- a/libtrellis/tools/ecpmulti.cpp +++ b/libtrellis/tools/ecpmulti.cpp
@@ -82,7 +82,7 @@ help: cerr << "Project Trellis - Open Source Tools for ECP5 FPGAs" << endl; cerr << "Version " << git_describe_str << endl; - cerr << "ecpmulti: ECP5 multiboot bitstream assembler" << endl; + cerr << argv[0] << ": ECP5 multiboot bitstream assembler" << endl; cerr << endl; cerr << "Copyright (C) 2019 Jens Andersen <jens.andersen@gmail.com>" << endl; cerr << endl;
diff --git a/libtrellis/tools/ecppack.cpp b/libtrellis/tools/ecppack.cpp index f060468..d6aea40 100644 --- a/libtrellis/tools/ecppack.cpp +++ b/libtrellis/tools/ecppack.cpp
@@ -75,11 +75,11 @@ help: cerr << "Project Trellis - Open Source Tools for ECP5 FPGAs" << endl; cerr << "Version " << git_describe_str << endl; - cerr << "ecppack: ECP5 bitstream packer" << endl; + cerr << argv[0] << ": ECP5 bitstream packer" << endl; cerr << endl; cerr << "Copyright (C) 2018 David Shah <david@symbioticeda.com>" << endl; cerr << endl; - cerr << "Usage: ecppack input.config [output.bit] [options]" << endl; + cerr << "Usage: " << argv[0] << " input.config [output.bit] [options]" << endl; cerr << options << endl; return vm.count("help") ? 0 : 1; }
diff --git a/libtrellis/tools/ecppll.cpp b/libtrellis/tools/ecppll.cpp index f7b01d3..13e6b26 100644 --- a/libtrellis/tools/ecppll.cpp +++ b/libtrellis/tools/ecppll.cpp
@@ -124,7 +124,7 @@ if(vm.count("help")){ cerr << "Project Trellis - Open Source Tools for ECP5 FPGAs" << endl; - cerr << "ecppll: ECP5 PLL Configuration Calculator" << endl; + cerr << argv[0] << ": ECP5 PLL Configuration Calculator" << endl; cerr << "Version " << git_describe_str << endl; cerr << endl; cerr << "This tool is experimental! Use at your own risk!" << endl;
diff --git a/libtrellis/tools/ecpunpack.cpp b/libtrellis/tools/ecpunpack.cpp index 77e2276..a5752a8 100644 --- a/libtrellis/tools/ecpunpack.cpp +++ b/libtrellis/tools/ecpunpack.cpp
@@ -51,11 +51,11 @@ help: cerr << "Project Trellis - Open Source Tools for ECP5 FPGAs" << endl; cerr << "Version " << git_describe_str << endl; - cerr << "ecpunpack: ECP5 bitstream to text config converter" << endl; + cerr << argv[0] << ": ECP5 bitstream to text config converter" << endl; cerr << endl; cerr << "Copyright (C) 2018 David Shah <david@symbioticeda.com>" << endl; cerr << endl; - cerr << "Usage: ecpunpack input.bit [output.config] [options]" << endl; + cerr << "Usage: " << argv[0] << " input.bit [output.config] [options]" << endl; cerr << options << endl; return vm.count("help") ? 0 : 1; }