fix PCHs on VS2019

* separate PCH for C and C++
* acconf.h now included in PCHs on windows, too
* meson now auto-generates companion source files for PCH headers
This commit is contained in:
line0 2019-10-27 02:18:06 +01:00 committed by Ryan Lucia
parent a91c4f70c3
commit b8e2cf83fd
7 changed files with 53 additions and 16 deletions

View file

@ -1,7 +1,5 @@
#ifdef __cplusplus #ifdef __cplusplus
#ifndef _WIN32
#include "../acconf.h" #include "../acconf.h"
#endif
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN

View file

@ -0,0 +1,3 @@
#include "../acconf.h"
#define WIN32_LEAN_AND_MEAN

View file

@ -79,13 +79,12 @@ else
endif endif
libaegisub_cpp_pch = ['include/lagi_pre.h'] libaegisub_cpp_pch = ['include/lagi_pre.h']
if cxx.get_id() == 'msvc' libaegisub_c_pch = ['include/lagi_pre_c.h']
libaegisub_cpp_pch += 'include/lagi_pre.cpp'
endif
libaegisub_inc = include_directories('include') libaegisub_inc = include_directories('include')
libaegisub = static_library('aegisub', libaegisub_src, acconf, libaegisub = static_library('aegisub', libaegisub_src, acconf,
include_directories: [libaegisub_inc, deps_inc], include_directories: [libaegisub_inc, deps_inc],
cpp_pch: libaegisub_cpp_pch, cpp_pch: libaegisub_cpp_pch,
c_pch: libaegisub_c_pch,
dependencies: deps) dependencies: deps)

View file

@ -1,6 +0,0 @@
// A dummy file for compiling the precompiled header with VC++
#if !defined(_MSC_VER)
#error "This file is only for use with MSVC."
#endif
#include "agi_pre.h"

View file

@ -48,9 +48,7 @@
#define _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS
#endif #endif
#ifndef _WIN32
#include "../../acconf.h" #include "../../acconf.h"
#endif
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN

46
src/include/agi_pre_c.h Normal file
View file

@ -0,0 +1,46 @@
// Copyright (c) 2006, Rodrigo Braz Monteiro
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
// * Neither the name of the Aegisub Group nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// Aegisub Project http://www.aegisub.org/
#include "../../acconf.h"
#define WIN32_LEAN_AND_MEAN
#ifdef _WIN32
#include <objbase.h>
#include <mmsystem.h>
#else
#include <sys/param.h>
#endif
#ifdef HAVE_OPENGL_GL_H
#include <OpenGL/gl.h>
#else
#include <GL/gl.h>
#endif

View file

@ -198,13 +198,12 @@ foreach opt: opt_src
endforeach endforeach
aegisub_cpp_pch = ['include/agi_pre.h'] aegisub_cpp_pch = ['include/agi_pre.h']
if cxx.get_id() == 'msvc' aegisub_c_pch = ['include/agi_pre_c.h']
aegisub_cpp_pch += 'include/agi_pre.cpp'
endif
aegisub = executable('aegisub', aegisub_src, version_h, acconf, aegisub = executable('aegisub', aegisub_src, version_h, acconf,
link_with: [libresrc, libluabins, libaegisub], link_with: [libresrc, libluabins, libaegisub],
include_directories: [libaegisub_inc, libresrc_inc, version_inc, deps_inc], include_directories: [libaegisub_inc, libresrc_inc, version_inc, deps_inc],
cpp_pch: aegisub_cpp_pch, cpp_pch: aegisub_cpp_pch,
c_pch: aegisub_c_pch,
install: true, install: true,
dependencies: deps) dependencies: deps)