[Libreoffice-commits] core.git: Branch 'private/tbsdy/workbench' - 2 commits - Repository.mk sal/Executable_alloca.mk sal/Executable_config.mk sal/Executable_macro.mk sal/Module_sal.mk sal/workben
Chris Sherlock
chris.sherlock79 at gmail.com
Thu Jul 27 12:15:58 UTC 2017
Repository.mk | 2 +
sal/Executable_alloca.mk | 31 +++++++++++++++++++++++++
sal/Executable_config.mk | 31 +++++++++++++++++++++++++
sal/Executable_macro.mk | 2 -
sal/Module_sal.mk | 2 +
sal/workben/alloca.cxx | 58 +++++++++++++++++++++++++++++++++++++++++++++++
sal/workben/config.cxx | 42 ++++++++++++++++++++++++++++++++++
7 files changed, 167 insertions(+), 1 deletion(-)
New commits:
commit 7f7e9b6eab571186ae791d04bc476e808d8e376f
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Thu Jul 27 22:05:36 2017 +1000
sal workben: sal/config.h example
Change-Id: I8ee9196a743aa9d2fe60308b9883d00e2fc21dcc
diff --git a/Repository.mk b/Repository.mk
index 8b6f1fb66e16..e75122c30800 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -79,6 +79,7 @@ $(eval $(call gb_Helper_register_executables,NONE, \
salmainargs \
macro \
alloca \
+ config \
))
$(eval $(call gb_Helper_register_executables_for_install,SDK,sdk, \
diff --git a/sal/Executable_config.mk b/sal/Executable_config.mk
new file mode 100644
index 000000000000..7b9b548f132f
--- /dev/null
+++ b/sal/Executable_config.mk
@@ -0,0 +1,31 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Executable_Executable,config))
+
+$(eval $(call gb_Executable_set_include,config,\
+ $$(INCLUDE) \
+ -I$(SRCDIR)/sal/inc \
+))
+
+$(eval $(call gb_Library_add_defs,config,\
+ -DSAL_DLLIMPLEMENTATION \
+))
+
+$(eval $(call gb_Executable_use_libraries,config,\
+ sal \
+))
+
+$(eval $(call gb_Executable_add_exception_objects,config,\
+ sal/workben/config \
+))
+
+$(call gb_Executable_get_clean_target,config) :
+ rm -f $(WORKDIR)/LinkTarget/Executable/config
+# vim: set ts=4 sw=4 et:
diff --git a/sal/Module_sal.mk b/sal/Module_sal.mk
index c4f968d37b75..eed06100b3a6 100644
--- a/sal/Module_sal.mk
+++ b/sal/Module_sal.mk
@@ -24,6 +24,7 @@ $(eval $(call gb_Module_add_targets,sal,\
Executable_salmain \
Executable_macro \
Executable_alloca \
+ Executable_config \
))
$(eval $(call gb_Module_add_check_targets,sal,\
diff --git a/sal/workben/config.cxx b/sal/workben/config.cxx
new file mode 100644
index 000000000000..ff8aa1f6611f
--- /dev/null
+++ b/sal/workben/config.cxx
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <sal/config.h>
+#include <sal/main.h>
+
+#include <cstdio>
+
+// _WIN32 for some reason has no SAL_DLLPREFIX
+#ifndef SAL_DLLPREFIX
+#define SAL_DLLPREFIX ""
+#endif
+
+SAL_IMPLEMENT_MAIN()
+{
+ fprintf(stdout, "Platform specific quirks via sal/config.h.\n");
+ fprintf(stdout, " Library name: %sexample%s\n", SAL_DLLPREFIX, SAL_DLLEXTENSION);
+ fprintf(stdout, " Executable name: example%s\n", SAL_EXEEXTENSION);
+ fprintf(stdout, " PATH syntax: PATH=%cpath%cto%cexecutable1%c%cpath%cto%cexecutable2\n",
+ SAL_PATHDELIMITER, SAL_PATHDELIMITER, SAL_PATHDELIMITER, SAL_PATHSEPARATOR,
+ SAL_PATHDELIMITER, SAL_PATHDELIMITER, SAL_PATHDELIMITER);
+ fprintf(stdout, " Config file: %s\n", SAL_CONFIGFILE("config"));
+ return 0;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 4d736d57195f0d236b74e829dcd8267c30142575
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Thu Jul 27 21:17:23 2017 +1000
sal workben: alloca() example
Change-Id: I387b06065d9ceabfba477ac76a34fd6992c654f8
diff --git a/Repository.mk b/Repository.mk
index a9a8540fddb8..8b6f1fb66e16 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -78,6 +78,7 @@ $(eval $(call gb_Helper_register_executables,NONE, \
salmain \
salmainargs \
macro \
+ alloca \
))
$(eval $(call gb_Helper_register_executables_for_install,SDK,sdk, \
diff --git a/sal/Executable_alloca.mk b/sal/Executable_alloca.mk
new file mode 100644
index 000000000000..e00b5c5bfa38
--- /dev/null
+++ b/sal/Executable_alloca.mk
@@ -0,0 +1,31 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Executable_Executable,alloca))
+
+$(eval $(call gb_Executable_set_include,alloca,\
+ $$(INCLUDE) \
+ -I$(SRCDIR)/sal/inc \
+))
+
+$(eval $(call gb_Library_add_defs,alloca,\
+ -DSAL_DLLIMPLEMENTATION \
+))
+
+$(eval $(call gb_Executable_use_libraries,alloca,\
+ sal \
+))
+
+$(eval $(call gb_Executable_add_exception_objects,alloca,\
+ sal/workben/alloca \
+))
+
+$(call gb_Executable_get_clean_target,alloca) :
+ rm -f $(WORKDIR)/LinkTarget/Executable/alloca
+# vim: set ts=4 sw=4 et:
diff --git a/sal/Executable_macro.mk b/sal/Executable_macro.mk
index 9aebf4d145ee..cc4014d5578e 100644
--- a/sal/Executable_macro.mk
+++ b/sal/Executable_macro.mk
@@ -26,6 +26,6 @@ $(eval $(call gb_Executable_add_exception_objects,macro,\
sal/workben/macro \
))
-$(call gb_Executable_get_clean_target,maro) :
+$(call gb_Executable_get_clean_target,macro) :
rm -f $(WORKDIR)/LinkTarget/Executable/macro
# vim: set ts=4 sw=4 et:
diff --git a/sal/Module_sal.mk b/sal/Module_sal.mk
index 2194273c7348..c4f968d37b75 100644
--- a/sal/Module_sal.mk
+++ b/sal/Module_sal.mk
@@ -23,6 +23,7 @@ $(eval $(call gb_Module_add_targets,sal,\
Executable_osl_process_child \
Executable_salmain \
Executable_macro \
+ Executable_alloca \
))
$(eval $(call gb_Module_add_check_targets,sal,\
diff --git a/sal/workben/alloca.cxx b/sal/workben/alloca.cxx
new file mode 100644
index 000000000000..9eb2567937ee
--- /dev/null
+++ b/sal/workben/alloca.cxx
@@ -0,0 +1,58 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <sal/main.h>
+#include <sal/alloca.h>
+
+#include <cstdio>
+#include <cstring>
+
+// cf. https://www.gnu.org/software/libc/manual/html_node/Variable-Size-Automatic.html
+
+SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
+{
+ fprintf(stdout, "Example to show alloca().\n");
+
+ int len=0;
+ char *name;
+
+ if (argc > 1)
+ {
+ for (int i = 1; i < argc; i++)
+ len += strlen(argv[i]);
+
+ name = (char*)alloca(len+argc+1); // argc spaces between words, with terminating nullptr
+ fprintf(stdout, " Just used alloca(%d)\n", len+argc+1);
+
+ for (int i = 1; i < argc; i++)
+ strcat(strcat(name, argv[i]), " ");
+
+ fprintf(stdout, " Arguments concatenated are \"%s\"\n", name);
+ }
+ else
+ {
+ fprintf(stderr, "Error, no arguments.\n");
+ return 1;
+ }
+
+
+ return 0;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list