Skip to content

Instantly share code, notes, and snippets.

View Manu343726's full-sized avatar

Manu Sánchez Manu343726

View GitHub Profile
@Manu343726
Manu343726 / assembly_out.cmake
Created September 5, 2015 21:33
Generating assembly listings with CMake
## Variables:
#
# OUTPUT_DIRECTORY: Directory where the assemblu file will be placed (For example "/home/manu/listings")
# ASSEMBLY_LISTING_FILE: Assembly listing filename (For example "foo.s")
# SOURCE_FILENAME: Name of the sourcefile being compiled (See bellow). For example "foo", from foo.cpp.
# TARGET: Target being compiled (Mostly an executable target). For example "foo".
if(MSVC)
# Trust me, Microsoft docs suck.
target_compile_options(${TARGET} "/Fa${OUTPUT_PATH}/${ASSEMBLY_LISTING_FILE}" /FA)
@Manu343726
Manu343726 / multiple_variants_run.cmake
Created September 5, 2015 21:14
Run a cmake project multiple times with multiple variants
# Custom target to do all the work with a simple command:
add_custom_target(run_all COMMAND ${CMAKE_COMMAND} -E echo \">>>> Running all variants\" WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
set(common_flags "-DGENERATE_ASSEMBLY=${GENERATE_ASSEMBLY} -DCPU_MODEL=\"${CPU_MODEL}\"")
if(WIN32)
list(APPEND VARIANTS "-G \"Visual Studio 14\" -DCMAKE_BUILD_TYPE=Release")
list(APPEND VARIANTS "-G \"Visual Studio 14\" -DCMAKE_BUILD_TYPE=Debug")
list(APPEND VARIANTS "-G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release")
list(APPEND VARIANTS "-G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Debug")
@Manu343726
Manu343726 / vs-unique-config.cmake
Created September 5, 2015 11:10
Workaround to make VS behave like unique-configuration generator
# Workaround to make VS behave like unique-configuration generator:
if(WIN32 AND MSVC)
set_target_properties([TARGET]
PROPERTIES EXCLUDE_FROM_ALL TRUE)
# Build [TARGET] using CMAKE_BUILD_TYPE always, as unique-configuration makefiles
add_custom_target(build_msvc ALL
COMMAND ${CMAKE_COMMAND} --build \".\" --target [TARGET] --config ${CMAKE_BUILD_TYPE}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
endif()
@Manu343726
Manu343726 / named_tuple.cpp
Created August 22, 2015 18:28
C++ named tuples
#include <tuple>
#include <cstdint>
#include <iostream>
namespace foonathan {
namespace string_id {
namespace detail
{
using hash_type = std::uint64_t;
@Manu343726
Manu343726 / main.cpp
Created August 13, 2015 21:46
c++ customizable tuple
#include "tuple.hpp"
#include <iostream>
template<typename T>
std::intptr_t between(const T& lhs, const T& rhs)
{
return reinterpret_cast<std::intptr_t>(&lhs) - reinterpret_cast<std::intptr_t>(&rhs);
}
template<typename T>
@Manu343726
Manu343726 / compiler_invocation.txt
Created August 8, 2015 21:36
ctti example 1 (clang)
clang++ -std=c++14 main.cpp -o ctti.s -O3 -S -Wno-unused-value -ftemplate-depth=2048 -DCTTI_MAX_STRING_LENGTH=128
@Manu343726
Manu343726 / compiler_invocation.txt
Last active August 29, 2015 14:26
ctti example 1
g++ main.cpp -o ctti.s -S -O3 -Wno-unused-value -ftemplate-depth=2048 -DCTTI_MAX_STRING_LENGTH=128
@Manu343726
Manu343726 / example.cpp
Last active August 29, 2015 14:26
piecewise_construct<T>(): Construct a T from tuple elements
#include "piecewise_construct.hpp"
struct foo
{
foo(int i, int j) :
i{i}, j{j}
{}
int i = 0, j = 0;
};
@Manu343726
Manu343726 / gist:cd7b345e91d30271b1de
Last active August 29, 2015 14:23
Type-erased C++ ranges
//
// Created by manu343726 on 16/06/15.
//
#ifndef ERASED_RANGE_HPP
#define ERASED_RANGE_HPP
#include <range/v3/all.hpp>
#include <type_traits>
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
#
# Please see http://i3wm.org/docs/userguide.html for a complete reference!